Javascript Mongoose虚拟填充返回null
我正在mongoose和GraphQL上设置后端,我在mongoose中的虚拟填充方面遇到了一些问题 这是一个node.js应用程序,运行在mongoose的5.4.0版和node的11.5.0版上。我试图遵循这两个指南,但都没有成功 newGame对象甚至不包含gameStatus属性。如果我添加Javascript Mongoose虚拟填充返回null,javascript,mongoose,graphql,Javascript,Mongoose,Graphql,我正在mongoose和GraphQL上设置后端,我在mongoose中的虚拟填充方面遇到了一些问题 这是一个node.js应用程序,运行在mongoose的5.4.0版和node的11.5.0版上。我试图遵循这两个指南,但都没有成功 newGame对象甚至不包含gameStatus属性。如果我添加.toJSON({virtuals:true})gameStatus显示为null 下面是来自mongo的JSON对象的示例 gameStatus object { "_id" : Obj
.toJSON({virtuals:true})
gameStatus显示为null
下面是来自mongo的JSON对象的示例
gameStatus object
{
"_id" : ObjectId("5c473a872721eb7327377fa2"),
"userID" : "5c3629deed4593ab3b435614",
"gameID" : ObjectId("5c472bc4b6b5f745bbbd7f6a"),
"gameStatus" : 8
}
game Object
{
"_id" : ObjectId("5c472bc4b6b5f745bbbd7f6a"),
"gameTitle" : "Lotto",
"gameDescription" : "Test",
"gameType" : 1,
"gameTypeID" : "5c472bc4b6b5f745bbbd7f69",
"gamePosition" : 8,
"course" : ObjectId("5c35e5e53757a7a29c33565f"),
"createdAt" : ISODate("2019-01-22T14:42:12.267Z"),
"updatedAt" : ISODate("2019-01-22T14:42:12.267Z"),
"__v" : 0
}
我希望上面的代码可以让我查询我的游戏对象,并获得带有虚拟填充的gameStatus对象的游戏对象,但它返回null。如果有人能看看我的问题,我会很高兴的。收藏命名时出现了问题。猫鼬通常在集合名称中添加“es”,如复数形式。我在mongoose
mongoose.set(“debug”,true)中启用调试后发现了这一点代码>并看到它正在寻找错误的集合。在此实例中,集合名称缺少“es”
这个堆栈溢出线程解释了一点
我通过向我的mongoose模式选项中添加集合:“gameStatus”
解决了这个问题。默认情况下,虚拟字段不处于活动状态。
您应该将它们设置为活动字段。像这样
user.set('toObject', { virtuals: true }); // add this
user.set('toJSON', { virtuals: true }); // add this
或者,如果需要的话
user.set('toObject', { virtuals: true }); // add this
user.set('toJSON', { virtuals: true }); // add this
user.plugin(mongooseLeanVirtuals); // add this
你能告诉我你在哪里创建模型吗?你是如何创造它的?我不确定我是否理解你的问题@MuhammadFaizan。它们在单独的文件中创建。导入猫鼬,并导出模型。包含模型的文件夹有一个index.ts文件,其中所有模型都作为模块导出<代码>const Game=mongoose.model(“游戏”,gameSchema);出口违约博弈代码>我认为这不相关,但您应该在时间戳旁边的选项中添加toJSON&toObject:true@BenSower对我请求以下ID,它在上面的两个对象中都表示:5C472BC4B6B5F745BBD7F6A。我还尝试将toJSON和toObject移到包含时间戳的花括号中,但没有任何区别。你能看看这个独立的要点,看看它是否适合你吗?它使用mongoose 5.4.2和mongodb 3.6.3
user.set('toObject', { virtuals: true }); // add this
user.set('toJSON', { virtuals: true }); // add this
user.plugin(mongooseLeanVirtuals); // add this