簡體   English   中英

我們如何使用Node JS使用填充方法引用mongodb

[英]How we reference mongodb using populate method using node js

我在使用node js中的populate方法進行引用,但是我對populate方法一無所知。 在這段代碼中,我引用了我的子收藏夾中的用戶收藏夾。 我有兩個收藏集,一個孩子,另一個用戶

這個孩子收藏

userId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',
    index: true
}

這是用戶集合

    "firstname":{type:String},
    "lastname":{type:String}

我已經從URL( http:// localhost:8000 / v1 / childPopulate /:57a4e4e67429b91000e225a5 )發送了ID,並在子模式中查詢了我存儲的userId

這是節點js

  this.childPopulate = function(req, res, next){
  var o_userid = req.params.id;
  var query = {userId:o_userid};

  Child.findOne(query).populate({
    path: 'userId',
    model: 'User',
    select: 'firstname lastname'
  }).exec(function(err,userinfo){
    if(err){
      return next(err);
    }else{
      res.send(userinfo);
      console.log(userinfo);
    }
  });
};

但這在瀏覽器中顯示此錯誤

 {"message":"Cast to ObjectId failed for value \":57a4e4e67429b91000e225a5\" at path \"userId\""}

該錯誤信息表明您正在傳遞字符串而不是ObjectID。 基本上,mongodb中的默認ID不是普通字符串。 它是一個唯一的12字節標識符。

因此,您應該將字符串轉換為ObjectID類型。

var query = {userId: mongoose.Types.ObjectId(stringId)};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM