2014-12-04 49 views
1

我在貓鼬中有以下模型。 projects字段爲protected貓鼬如何投影保護區更新

var UserProjectSchema = new Schema({ 
    user : ObjectId 
    , projects : {type : [ObjectId], select:false} //protected field 
    , projectCount : Number 
}); 

我想這protected場更新後,這樣我可以返回一組新的projects

UserProjectSchema.statics.addProject = function(userId, projectId) { 

    UserProject.findOneAndUpdate({ 
     user:userId 
    }, 
    { 
     $addToSet: {"projects" : projectId} 
    , $inc : {"projectCount" : 1} 
    }, 

    { 
    upsert : true 
    //project : '+projects' it won't work 
    }, 

    function(err, doc){ 
    //doc.projects is undefined 

    // UserProject.findOne({user:userId},'+projects', function(err, doc){ 
    // doc.projects is now available but this extra query ??? 
    //}) 
    }); 
} 

var UserProject = mongoose.model('user_projects', UserProjectSchema); 

Mongoose在成功查詢後返回更新的文檔,但缺少指定要投影的字段。 有沒有什麼方法可以指定在貓鼬更新後投影哪些字段,以便我可以刪除多餘的查詢?

回答

1

在您的options參數中包含select參數,並列出您想要投影的所有字段。

{ 
    upsert : true, 
    select:{"projects":1} // all the fields you would want to select 
} 
+0

OMG它是在那裏的文檔?不能相信。非常感謝。 – Lekhnath 2014-12-04 20:00:59

+0

歡迎。它發生了。 ;-) – BatScream 2014-12-04 20:05:05