Mongoose,如何使用populate加入集合?

时间:2016-11-25 05:42:27

标签: node.js mongodb mongoose

第一个架构:

const ProviderSchema =  new mongoose.Schema({
    provName    : { type: String, index: true }
});
module.exports = mongoose.model('provider', ProviderSchema);

第二架构:

const WebProviderSchema =  new mongoose.Schema({
    userId      : { type: Schema.Types.ObjectId, ref: 'users'},
    providerId  : { type: Schema.Types.ObjectId, ref: 'providers'}
});
module.exports = mongoose.model('webProvider', WebProviderSchema);

如何加入这两种模式?

到目前为止,如果我执行以下操作,我只从第二个模式获取数据:

webProvider
            .find({userId : '23423df234434bc956'})
            .populate("providers")
            .exec( function (error, listData) {
                  console.log(listData);
});

1 个答案:

答案 0 :(得分:1)

要填充,您应该使用本地字段providerId。应该是.populate("providerId")而不是.populate("providers")

webProvider.find({userId : '23423df234434bc956'})
           .populate("providerId")
           .exec( function (error, listData) {
               console.log(listData);
           });

要填充多个字段可以使用如下:

.populate("providerId userId")

.populate("providerId")
.populate("userId")