Model.populate() 不是 Mongoose 中的返回文档

Posted

技术标签:

【中文标题】Model.populate() 不是 Mongoose 中的返回文档【英文标题】:Model.populate() is not return document in Mongoose 【发布时间】:2020-08-17 22:55:10 【问题描述】:

我有两个架构,

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

// Create the User Schema
const UserSchema = new Schema(
    email: 
        type: String
    ,
    password: 
        type: String
    
);

module.exports = User = mongoose.model("users", UserSchema);

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

// Create the Status Schema
const StatusSchema = new Schema(
    admin_id:
        type: Schema.Types.ObjectId,
        ref: 'users'
    ,
    text:
        type: String
    ,
);

module.exports = Status = mongoose.model("Status", StatusSchema, "Status");

然后我在我的 api 路由中使用 populate

router.get(
  "/",
  passport.authenticate("jwt", 
    session: false,
  ),
  (req, res) => 
    try 
      Status.find().populate('admin_id').exec(err, data=>
        console.log(data); // return a blank array : []
        return res.sendStatus(200)
      )
    
   catch (error) 
      res.sendStatus(500);
    
  
);

当我调用这条路线时,我得到了一个空数组 [] ...。知道我做错了什么吗?我应该提到我已经在两个 admin_id 的状态集合中插入了记录

有没有其他方法可以做到这一点?

【问题讨论】:

【参考方案1】:

有很多方法可以做到这一点。

你应该使用这个,

Status.find().then((doc) => 
  if (doc) 
    Status.populate(doc,  path: "admin_id", model: "users" , function (
      err,
      data
    ) 
      if (err) throw err;
      console.log(data); //here is your documents with admin user
    );
  
);

【讨论】:

以上是关于Model.populate() 不是 Mongoose 中的返回文档的主要内容,如果未能解决你的问题,请参考以下文章

这个 Mongo 查询和这个 SQL 查询一样吗?我是不是正确地考虑了Mongo?

卷“mongo”的 MountVolume.SetUp 失败:hostPath 类型检查失败:/mongo/data 不是目录

你能告诉我 express-mongo-sanitize 是不是有效吗?

json Mongo查询不是空或空

mongo 是不是提供解构大型数据集的文档数组的功能?

mongo php驱动程序扩展在cli中加载,而不是OSX中的apache