【问题标题】:Mongoose .populate() not populatingMongoose .populate() 没有填充
【发布时间】:2016-02-14 12:07:45
【问题描述】:

我尝试了一些不同的方法,但我无法让 Mongoose 将 Users 信息填充到 Items 集合中。

文件:users.js

var mongoose = require( 'mongoose' )
    Schema = mongoose.Schema,
    ObjectId = Schema.Types.ObjectId;

var userSchema = Schema( {
    _id: ObjectId,
    barcode: String,
    name: String,
    email: String,
    type: String
} );

var Users = mongoose.model( 'Users', userSchema );

module.exports = Users;
module.exports.schema = userSchema;

文件:items.js

var mongoose = require( 'mongoose' )
    Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId,
    Users = require( __dirname + '/users' ),
    userSchema = Users.schema;

var itemSchema = Schema( {
    _id: ObjectId,
    name: String,
    barcode: String,
    transactions: [ {
        date: Date,
        user: { type: ObjectId, ref: 'Users' },
        status: String
    } ]
} );

var Items = mongoose.model( 'Items', itemSchema );

module.exports = Items;
module.exports.schema = itemSchema;

这是我的测试代码:

var mongoose = require( 'mongoose' );
mongoose.connect( 'mongodb://localhost/booker' );

var Users = require( __dirname + '/models/users' );
var Items = require( __dirname + '/models/items' );

Items.findOne().populate( 'user' ).exec( function( err, arr ) {
    console.log( arr );
} );

本质上问题是数组没有将用户信息填充到项目中。

我做错了什么?

【问题讨论】:

    标签: javascript node.js mongodb mongoose mongoose-populate


    【解决方案1】:

    您要填充的 user 字段嵌套在您的 transactions 数组字段的子文档中,因此您需要在 populate 调用中包含其完整路径:

    Items.findOne().populate( 'transactions.user' ).exec( function( err, arr ) {
        console.log( arr );
    } );
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2020-05-18
      • 2020-11-19
      • 1970-01-01
      • 2019-01-01
      • 2021-04-26
      • 1970-01-01
      • 2019-06-13
      • 2019-11-24
      相关资源
      最近更新 更多