Node.js 猫鼬:链接到引用子文档的种群

Node.js 猫鼬:链接到引用子文档的种群,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我必须在node.js express应用程序-用户和交付中创建架构 var User = new Schema({ name: {type: String}, addresses: [ { city: {type: String}, address: {type: String}, } ], }); 我无法从交付架构的地址字段中引用用户的地址子文档,因此地址字段存储子文档的\u id va

我必须在node.js express应用程序-用户和交付中创建架构

var User = new Schema({
    name: {type: String},
    addresses: [
        {
            city: {type: String},
            address: {type: String},
        }
    ],
});
我无法从交付架构的
地址
字段中引用用户的
地址
子文档,因此
地址
字段存储子文档的
\u id

var Delivery = new Schema({
    time: {type: String},
    address: {type: String} // this field references to User schema's address subdocument
});
那么,如何填充
交付
模式中的
地址
字段呢

Delivery.findOne(/*here is condition*/).populate({path: 'address', model: 'User.addresses'});
试试这个:

var Address = new Schema({
    city: {type: String},
    address: {type: String}
});
var AddressModel = mongoose.model('AddressModel', Address);

var User = new Schema({
    name: {type: String},
    addresses: [Address],
});

var Delivery = new Schema({
    time: {type: String},
    address: {
        type: Schema.ObjectId,
        res: 'Address'
    }
});
然后:


它不工作,简单地址变为空,没有任何错误。每个架构都存储在单独的文件中-
user.js
delivery.js
@user3215609 MongoDB没有联接,因此您必须手动从另一个集合加载数据。或者将地址保存在专用的集合中以供参考。
Delivery.findOne(/*here is condition*/).populate('address')...