2016-05-16 92 views
0

我使用的空數組以下貓鼬Schema貓鼬返回ObectID,這是不是

var userSchema = new mongoose.Schema({ 

    ... 

    sentFriendsRequests: [{ 
    type : ObjectId, 
    }] 

)}; 

我加入一些ObjectIdssentFriendsRequests

User.update({ _id: userId }, 
    { $push: { sentFriendsRequests: targetId }}, 
    {safe: true, upsert: true}, function(err, result) { 
     if (err || !result) { 
      done(err); 
     } 
     done(null); 
}); 

這似乎是正常工作,因爲當我使用Mongolab來託管我的數據庫時,在屏幕上顯示文檔時,我可以看到ObjectIds已成功添加到陣列中:

"receivedFriendsRequests": [ 
    "5720c659571a718705d58fc3" 
] 

奇怪的是,查詢這個數組時,貓鼬總是返回一個空...

User.find({ _id: userId}, function(err, res) { 
    console.log(res[0].sentFriendsRequests); 
}); 
// prints [] 

回答

1

有混淆mongodb貓鼬

貓鼬需要定義Schema,但mongodb不是。

要在MongoDB中定義新的ObjectId:

var ObjectId = require('mongodb').ObjectID 
var objectId = new ObjectID(); 
在貓鼬

var mongoose = require('mongoose'); 
var objectId = new mongoose.Types.ObjectId; 
0

我終於發現,使用var ObjectId = require('mongodb').ObjectID;讓貓鼬返回空數組,而使用mongoose.Schema.Types.ObjectId正常工作。我不知道該如何解釋。