我正在尝试将一个节点应用程序发布到我的Raspberrypi(我最接近专用服务器XD)我的一些朋友来测试我写的一个小网络应用程序,但由于某种原因,其中一个查询是当它在我的ide(云9)上时,在pi上没有正常工作。
这是架构:
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: []
}
但是在mongo中执行db.campaigns.find({})
会导致:
{
"_id" : ObjectId("556f09195865094845a0d522"),
"gameMaster" : ObjectId("556d1daf4b9b697213468827"),
"gameSystem" : "Nwodv2",
"subSystem" : "Demon",
"name" : "Baltimore",
"players" : [ ],
"__v" : 0
}
我觉得我必须遗漏一些东西......我不知道怎么解决这个问题,我在字段上没有限制器的情况下尝试了查询,但它仍然省略了gameMaster
场...
编辑:此处请求创建Campaign对象
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 :(得分:1)
https://github.com/Automattic/mongoose/issues/3020
如果有其他人遇到此问题。我发现这个错误报告可以解释问题的原因,它与你如何安装新的mongoose 4有关。