1

こんにちは、新しいサブドキュメントをプッシュする前にサブドキュメントが存在するかどうかを確認するときに、この問題が発生します。

var UserSchema = new Schema({
   name        : String,
   app_key     : String,
   app_secret  : String,
   tasks       : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task 
});

var TaskSchema = new Schema({
   name            : String,
   lastPerformed   : Date,
   folder          : String,
   user            : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User
});

これにより、タスクの配列を含むすべてのユーザーのクエリは次のようになります。

User.findOne({...}).populate('tasks').run(function(err, user) {
    var subdoc = user.tasks.id(mytask.id);
    if(subdoc){
        //not exist
        //push
    }
});

これはエラーです:

TypeError: Object  has no method 'id'
4

1 に答える 1

1

「タスク」サブドキュメントに「id」フィールドが定義されていないため、このエラーが発生しています。「user.tasks. _id '、MongoDB がデフォルトでドキュメントに追加する ObjectId を返します。

于 2013-09-16T14:34:45.567 に答える