2015-06-03 50 views
0

我試圖發佈一個節點應用程序到我的Raspberrypi(最接近我的專用服務器XD),以便我的一些朋友測試我寫的一個小型網絡應用程序,但由於某種原因,其中一個查詢在pi上運行時無法正常工作(雲9)。Mongoose/Mongoose查詢結果中缺少的字段

這裏是架構:

var campaignSchema = new Schema({ 
    gameMaster: { 
     type: Schema.Types.ObjectId, 
     ref: "Users" 
    }, 
    players: [{ 
     type: Schema.Types.ObjectId , 
     ref: "Users" 
    }], 
    name: String, 
    gameSystem: String, 
    subSystem: String 
}); 

這裏是查詢:

db.Campaign.findOne({'_id' : req.params.campaign}, 'gameMaster players') 
.exec(function(err, campaign){ 
    console.log(campaign); 
}); 

導致:

{ 
    _id: 556f09195865094845a0d522, 
    players: [] 
} 

但在這樣做的蒙戈結果db.campaigns.find({})

{ 
    "_id" : ObjectId("556f09195865094845a0d522"), 
    "gameMaster" : ObjectId("556d1daf4b9b697213468827"), 
    "gameSystem" : "Nwodv2", 
    "subSystem" : "Demon", 
    "name" : "Baltimore", 
    "players" : [ ], 
    "__v" : 0 
} 

我覺得我一定是錯過了一些東西......我沒有任何想法如何解決這個問題,雖然我試圖在字段中沒有限制器的查詢,但它仍省略了字段gameMaster ...

編輯:在這裏要求的是運動對象的創建

var campaign = new db.Campaign({ 
     gameMaster: userid, 
     gameSystem: req.body.system, 
     subSystem: req.body.subsystem, 
     name: req.body.name 
    }); 

進一步混淆,該查詢的工作:

db.Campaign.findOne({'_id' : req.params.campaign}, 
    '_id name gameSystem subSystem gameMaster players') 
    .populate('gameMaster', '_id displayName') 
    .populate('players', '_id displayName') 
    .exec(function(err, campaign) { 
     //gameMaster is valid here with the id and displayName populated... 
    }); 
+0

@JohnnyHK 我將它添加到原來的文章。 用戶標識是登錄用戶的一個對象。 – comwizz2

+0

@SylvainLeroux 是的。我驗證了用戶確實存在被引用。 – comwizz2

+0

@JohnnyHK'module.exports.Campaign = conn.model(「Campaigns」,campaignSchema);'其中'conn'是一個貓鼬連接。 – comwizz2

回答