web-dev-qa-db-ja.com

MongoDB-エラー:ドキュメントを保存する前に_idが必要です

私はこのプロジェクトに苦労しています。私はいくつかの分野で時代遅れのチュートリアルに従っています。たとえば、Jqueryのバージョンは一部の機能でまったく異なる形式を使用しており、多くの変更を行う必要がありました。しかし、私は最後の大きな問題に取り組んでいると思います。スキーマ変数には、_id、ユーザー名、およびパスワードの種類があります

var UserSchema = new mongoose.Schema({
    _id: mongoose.Schema.ObjectId,
    username: String,
    password: String
}); 

しかし、アプリに新しいユーザーを追加しようとすると、取得するはずのアラートを取得する代わりに、[オブジェクトオブジェクト]としてポップアップし、データベースには何も追加されません。次に、このエラーがmongo cmdにポップアップします

「エラー:ドキュメントを保存する前に_idが必要です」。

_id行をコメントアウトしようとしましたが、正しいメッセージは表示されますが、データベースには何も表示されません。

12
Matt Lee

その非常にシンプルな:

  1. スキーマで_idフィールドを明示的に宣言している場合は、明示的に初期化する必要があります
  2. スキーマで宣言していない場合、MongoDBは宣言して初期化します。

できないことは、スキーマに含めることですが、初期化しないことです。あなたが話しているエラーがスローされます

27
dasfdsa

_idをuserIdとして指定したいスニペットを試してください。

var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;

var UserSchema = new Schema({
    username: String,
    password: String
});
UserSchema.virtual('userId').get(function(){
    return this._id;
});
1
user3172272

_idは、MongoDbによって自動的に追加されます。

データ構造に_idを保持する場合は、必ず正しく初期化してください。

var obj = new UserSchema({ 
    "_id": new ObjectID(), 
    "username": "Bill", 
    "password" : "...." 
});
1
Andrea Girardi