2015-11-19 115 views
2

具有以下update查詢貓鼬更新:獲得推子文檔的_id

var template = {name:'my_name', ...}; 
ApplicationModel.update({ 
     _id: idApplication, 
     'templates.name': { '$ne': template.name } 
    }, 
    { 
     $push: { templates: template } 
    }, function(err, raw) { 
      if (err) { 
       return callback(err); 
      } 
      ... 
      callback(); 
    }); 

裏面ApplicationModel有一個數組稱爲templates,我推template對象和貓鼬自動分配每個對象的_id

有沒有辦法在查詢的回調函數中獲取這個_id

回答

1

在類似這樣的,我們通常只是手動創建的ObjectId情況,所以我們在保存之前有它:

var template = {name:'my_name', ...}; 
var myNewId = new mongoose.Types.ObjectId(); 
template._id = myNewId; 

ApplicationModel.update({ 
    _id: idApplication, 
    'templates.name': { '$ne': template.name } 
    }, 
    { 
     $push: { templates: template } 
    }, function(err, raw) { 
     if (err) { 
     return callback(err); 
     } 
     // myNewId is available here... 

     callback(); 
    }); 
}; 

的ObjectId存在反正總是創建由mongoDriver在客戶端,所以實際上很少區別在代碼中顯式執行或讓MongoDriver處理它。