express.js 猫鼬填充 2 模型

问题描述

我想加入 mongoDB 集合,但我在项目中有 2 个模型。

ADMINDETAIL 和 ADMINDETAIL 从 member.model.js 获取 UID。

我如何填充它。

queue.model.js

var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var queueSchema = Schema(
{
    QUEUE: String,UID: String,DATETIME: String,ADMIN_ID: String,USERDETAIL:{
        type: Schema.Types.String,ref:"MEMBER"
    },ADMINDETAIL:{
      type: Schema.Types.String,},{
    collection: "QUEUE"
  }
);
var QUEUE = mongoose.model("QUEUE",queueSchema);
module.exports = QUEUE;

member.model.js

var mongoose = require("mongoose");
var memberSchema = mongoose.Schema(
  {
    UID: {type: String},NAME: {type: String},SURNAME: {type: String},IDNUMBER: {type: String},PHONE: {type: String},ADDRESS: {type: String},{
    collection: "MEMBER"
  }
);
var MEMBER = mongoose.model("MEMBER",memberSchema);
module.exports = MEMBER;

queue.router.js

// GET QUEUE BY USER
router.get("/byuid/:UID",(req,res) => {
  var {UID} = req.params;
  Queue.find({UID})
        .populate({Path:"USERDETAIL",model:"MEMBER"})
        .populate({Path:"ADMINDETAIL",model:"MEMBER"})
        .exec((err,data) => {
          if (err) return res.status(400).send(err);
          return res.status(200).send(data);
        });
});

我遇到了错误

TypeError: utils.populate: invalid path. Expected string. Got typeof `object`

解决方法

将文件的类型从 String 更改为 ObjectId,如下所示:

 USERDETAIL:{
        type: Schema.Types.ObjectId,ref:"MEMBER"
    },ADMINDETAIL:{
      type: Schema.Types.ObjectId,},

添加新数据之后,您可以像这样用于人口:

.populate("USERDETAIL ADMINDETAIL")

.populate([{
    path: 'USERDETAIL ',model: 'MEMBER'
},{
    path: 'ADMINDETAIL',model: 'MEMBER'
}])

我想你错过了[]