我正在使用猫鼬做快递申请。我有一个名为users
的集合,其中有一个名为_subscriptions
的文件,该文件是一个对象数组,每个对象都包含一个名为field
的字段,该字段是{的文档的ObjectId {1}}(这是我数据库中的另一个集合)。
我想制作这样一个API,在获取ID参数后,我将获得一个fields
形式的user
形式的users
集合,而不是其填充字段{{1 }}。为此,我正在使用填充方法,但是它不起作用。
这是显示field
集合的屏幕截图:
这是显示field
集合的屏幕截图:
这是字段(文件名Field.js)的架构:
users
这是用户的模式和模型
fields
这是用户路由器的代码
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var FieldSchema = new Schema(
{
_id: Schema.Types.ObjectId,
name: String,
price: Number,
_categories: [{
type: Schema.ObjectId,
}],
}
);
module.exports = mongoose.model('Field', FieldSchema);`
这是我调用app.use方法的地方:
这是我正在使用邮递员的回复
我期待着有人的帮助解决此问题 因为我无法识别我的错误。在这方面您的帮助将受到高度赞赏。
提前感谢
答案 0 :(得分:1)
我了解的是,在用户集合中有_subscriptions
,在_subscriptions
中有field
。如果这是您的架构,则应该像当前已传递的那样,将“ _subscriptions.field
”作为参数传递给填充函数,而不是“ field
”。
因此,您用于用户子路由/findById/:id
的代码必须像这样:
router.get('/findById/:id',function(req, res, next) {
var id = req.params.id;
User.findById(id, function(err, doc) {
if (err) {
console.error('error, no entry found');
}
res.status(200).send(doc);
}).populate('_subscriptions.field').exec(function (err, story) {
if (err) return handleError(err);
console.log('Here!!!!!');
});
});