mongodb - Mongoose query.populate 只返回 objectId

标签 mongodb mongoose

当尝试填充一个字段时,所有返回的都是最初为该字段保存的 objectid

models/gifts.js

var GiftSchema = new Schema({
        name: String,
        owner: {
            user: {
                type: Schema.Types.ObjectId,
                ref: 'User',
                required: false
            },
            nonRegisteredEmail: {
                type: String,
                required: false
            },
            nonRegisteredName: {
                type: String,
                required: false
            }
        },
        description: String,
        url: String
    }
});
module.exports = mongoose.model('Gift', GiftSchema);

models/user.js

var UserSchema = new Schema({
  name: String,
  email: { type: String, lowercase: true },
  role: {
    type: String,
    default: 'user'
  },
  hashedPassword: String,
  provider: String,
  salt: String
});
module.exports = mongoose.model('User', UserSchema);

我通过将用户的 _id 添加到我的 giftowner.user 字段来保存我的 gift 模型.

然后,当我在查询期间尝试填充 user 字段时,仅返回 _id 字段。 EX 5388bb3a82f0e4003100a6ba

exports.getAll = function (req, res) {
        return Gift.find()
            .populate({
                path:'user',
                model:'User'
            })
            .exec(function(err,gifts){
                if(!err)
                {
                    return res.json(gifts);
                }
                else{
                    return res.send(err);
                }
            });
    };

最佳答案

您要填充的路径是 owner.user,而不仅仅是 user,因此您应该更改此路径:

return Gift.find()
    .populate({
        path:'user',
        model:'User'
    })

对此:

return Gift.find()
    .populate({
        path:'owner.user',
        model:'User'
    })

关于mongodb - Mongoose query.populate 只返回 objectId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23960671/

相关文章:

node.js - NodeJS API 如何查询和响应

python - 寻找 : nosql (redis/mongodb) based event logging for Django

mongodb - Mongoose 外键

node.js - 在调用 .save 方法后对 Mongoose Document 使用扩展语法会导致未定义的键

mongodb - Mongoose.find() 如何查询属性大于某个数字或值为空或属性不存在的文档?

mongodb - 在 MongoDB 中查询精确匹配

javascript - Meteor.js 和 Collection2 : Update Method that Inserts New Object in subschema

node.js - mongoose.connect 连接到 mongodb 后不调用回调

mongodb - 如何在实例方法中调用 mongoose 的 CRUD 方法

mongodb - 在Mongodb中,如何检索符合条件的对象的子集?