【发布时间】:2021-09-06 16:14:24
【问题描述】:
我正在尝试创建一个动态函数,该函数获取字段数组、过滤器对象和模式模型,并填充数组中的字段。
例如: 而不是像这样填充-
getCardByName=(Model,filter)=>{
return new Promise((resolve, reject) => {
Model.findOne(filter).populate({ path: "user" })
.populate({ path: "socialMedia" })
.populate({ path: 'galleryList' })
.populate({ path: 'reviewsList' })
.populate({ path: 'lead' })
.populate({ path: 'statistic', })
.exec(async(err, card) => {
if (err) {
reject(err);
}
resolve(card)
})
});
}
我想创建一个类似这样的动态函数:
//assume arr is a function argument
arr=["user", "socialMedia", "galleryList", "reviewsList", "lead", "statistic"]
let populateStr=""
arr.forEach(path => {
populateStr+=`.populate({path: ${path}})`
});
console.log(populateStr)
return new Promise(async(resolve, reject)=>{
try{
await Model.findOne(filter).populateStr
.exec(async(err,card)=>{
if(err)
{
reject(err)
resolve(card)
}
})
}
catch(err){
console.log(err)
}
})
当我运行这段代码时,我得到了人口字符串,但人口本身并没有真正发生。
(TypeError: 无法读取未定义的属性 'exec')
你有什么想法或者修改我写的代码吗?
谢谢!
【问题讨论】:
标签: node.js express mongoose dynamic-programming mongoose-populate