Javascript Mongoose填充引用对象id,而不是对象本身 出身背景
以下是我的用户模型的一部分:Javascript Mongoose填充引用对象id,而不是对象本身 出身背景,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,以下是我的用户模型的一部分: const Group=require(“./组”) ... 小组:{ 类型:[{type:Schema.ObjectId,ref:Group}], 默认值:[], }, 这是我的团队模型: module.exports=mongoose.model( “集团”, 新模式( { 姓名:{ 类型:字符串, 要求:正确, 独一无二:没错, }, /** *在此组上具有所有者权限的用户对象数组 */ 业主:{ 类型:[{type:Schema.ObjectId,ref:
const Group=require(“./组”)
...
小组:{
类型:[{type:Schema.ObjectId,ref:Group}],
默认值:[],
},
这是我的团队模型:
module.exports=mongoose.model(
“集团”,
新模式(
{
姓名:{
类型:字符串,
要求:正确,
独一无二:没错,
},
/**
*在此组上具有所有者权限的用户对象数组
*/
业主:{
类型:[{type:Schema.ObjectId,ref:User}],
默认值:[],
},
},
{
时间戳:对,
}
)
)
代码
下面是我正在运行的代码,用于尝试和填充:
const user=await(await user.findOne({u id:…})).execPopulate(“组”)
console.log(user.groups)
当我希望它输出实际的组文档时,我的console.log正在输出一个对象ID数组
尝试的解决方案
我尝试将我的ref
更改为使用字符串(“组”
),尝试以不同的方式安排查询,等等。我不确定如何执行此操作
提前道歉如果这是一个重复,我已经尽了最大努力搜索,但无法真正找到一个适合我的解决方案
具体来说,我需要什么帮助?
我试图在用户模型和组模型之间创建一个“链接”。在我的console.log中,我希望它输出一个组文档;但当您将
execPopulate
更改为populate
时,它会输出一个对象ID(这是它在数据库中原始存储的方式,意味着Mongoose没有正确地转换它),如:
async function findUserAndPopulate(userId){
const response = await User.findOne({
_id: userId,
}).populate('groups')
console.log("response",response)
}
你得到:
{
groups: [
{
owners: [Array],
_id: 5ecc637916a2223f15581ec7,
name: 'Crazy',
createdAt: 2020-05-26T00:31:53.379Z,
updatedAt: 2020-05-26T00:31:53.379Z,
__v: 0
}
],
_id: 5ecc6206820d583b99b6b595,
fullname: 'James R',
createdAt: 2020-05-26T00:25:42.948Z,
updatedAt: 2020-05-26T00:36:12.186Z,
__v: 1
}
因此,您可以访问user.groups
请参阅文档:我不清楚您的问题。你能澄清你的问题、预期产出和实际产出吗?@JairusMartin我正试图在用户模型和组模型之间建立一个“链接”。在我的
控制台.log中,我希望它输出一个组文档;但如果您可以更新您的问题,它会输出一个对象ID(这是它在数据库中原始存储的方式,这意味着Mongoose没有正确地转换它)。您更可能从社区得到响应。@JairusMartin Done!看起来您的问题与如何声明两个模型之间的关系有关,这样您就可以访问诸如user.groups.name之类的关联模型。