【问题标题】:Unable to populate the creator field in mongoose无法在猫鼬中填充创建者字段
【发布时间】:2016-10-18 21:47:32
【问题描述】:

我无法填充我的创建者,
一切都很好,但没有显示 id

var StorySchema = new Schema({
     creator: { type: Schema.Types.ObjectId, ref: 'User' },
     content: String,
     created: { type: Date, deafult: Date.now }
   })

module.exports = mongoose.model('Story', StorySchema);

这是我的第二个代码

api.route('/')
    .post(function (req, res) {
        var story = new Story({
          creator: req.decoded.id,
          content: req.body.content
        });

        story.save(function (er) {
            if (er) {
              res.send(er);
              return;
            }
            res.json('User story is created');
        });

    })

    .get(function (req, res) {
        Story.find({ creator: req.decoded.id})
            .populate({ path: 'creator'}).exec(function (er, data) {
          res.json(data);
        });
    })

一切都很好,只是没有显示用户对象 ID

【问题讨论】:

    标签: node.js mongoose populate


    【解决方案1】:

    您必须将解码后的字符串转换为正确的 ObjectID:

    const ObjectId = mongoose.Types.ObjectId;
    api.route('/')
        .post(function (req, res) {
            var story = new Story({
              creator: new ObjectId(req.decoded.id),
              content: req.body.content
            });
    
            story.save(function (er) {
                if (er) {
                  res.send(er);
                  return;
                }
                res.json('User story is created');
            });
    
        });
    

    【讨论】:

    • 现在它无法正常工作我无法获得新故事
    • 不,什么都没有,只是创建者在返回 json 时没有显示,其他显示没有任何错误
    • 所以你得到了创建用户故事的响应?
    【解决方案2】:

    尝试这样的事情,以便将您的字符串转换为有效的 mongo objectId

    var ObjectID = require('mongodb').ObjectID;
    _id = new ObjectID(_id); 
    

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2014-01-08
      • 2016-04-25
      • 2019-05-04
      • 1970-01-01
      • 2014-07-29
      • 2020-11-09
      • 2013-03-31
      • 2021-01-25
      相关资源
      最近更新 更多