首页 > 解决方案 > mongoose.Schema.Types.ObjectId 在 console.logged 时给出一个空数组

问题描述

这是我的表架构

var mongoose=require("mongoose");

var tableSchema=new mongoose.Schema({
  tName:String,
  keys:[
    {
      type:mongoose.Schema.Types.ObjectId,
      ref:"key"
    }
  ],
  fields:[
    {
      type:mongoose.Schema.Types.ObjectId,
      ref:"field"
    }
  ]
})
module.exports=mongoose.model("table",tableSchema);

----密钥架构

var mongoose=require("mongoose")
 var keySchema=new mongoose.Schema({
   name:[String],
   value:[String]
 })
module.exports=mongoose.model("key",keySchema);

---字段模式

var mongoose=require("mongoose")

 var fieldSchema=new mongoose.Schema({
   name:[String],
   value:[String]
 })
module.exports=mongoose.model("field",fieldSchema);

----我是如何进入的

  app.post("/table/:id/value",function(req,res){
      var Key={
        name:req.body.key,
        value:req.body.keyValue
      }
      var Field={
        name:req.body.field,
        value:req.body.fieldValue
      }
      table.findById(req.params.id,function(err,foundTable){
        if(err){
          console.log(err)
        }
        else{
          console.log(foundTable)
          key.create(Key,function(err,createKey){
            foundTable.keys.push(createKey)
            console.log(createKey)
          })
          field.create(Field,function(err,createField){
            foundTable.fields.push(createField)
            console.log(createField)
          })
          foundTable.save();
          console.log(foundTable);
            res.redirect("/table/"+req.params.id)
        }
      })
})

未引用 ObjectId 这是打印表格的图像

我如何填充表格

app.get("/table/:id",function(req,res){
  table.findById(req.params.id).populate("keys").populate("fields").exec(function(err,foundTable){
    if(err){
      console.log(err)
      res.redirect("/")
    }
    else{
      console.log(foundTable);
      res.render("show",{table:foundTable})
    }
  })
})

我不知道我哪里出错了,一​​切似乎都很好,但是打印时没有引用反对的对象并且没有被填充

应该如何打印参考:https ://bezkoder.com/mongoose-one-to-one-relationship-example/

这是一个例子: 第一个模式

const mongoose = require("mongoose");

    const Customer = mongoose.model(
      "Customer",
      new mongoose.Schema({
        name: String,
        age: Number,
        gender: String
      })
    );

    module.exports = Customer;

第二模式

 const mongoose = require("mongoose");

    const Identifier = mongoose.model(
      "Identifier",
      new mongoose.Schema({
        cardCode: String,
        customer: {
          type: mongoose.Schema.Types.ObjectId,
          ref: "Customer"
        }
      })
    );

    module.exports = Identifier;

应该如何打印

{
   _id : ObjectId("5da000be062dc522eccaedeb"),
   cardCode : "5DA000BC06",
   customer : ObjectId("5da000bc062dc522eccaedea"),
   __v : 0
}

应该如何填充

 [ { _id: 5da135bf61a1dd3e9c2a6e82,
    cardCode: '5DA135BD61',
    customer:
     { _id: 5da135bd61a1dd3e9c2a6e81,
       name: 'bezkoder',
       age: 29,
       gender: 'male',
       __v: 0 },
    __v: 0 } ]

标签: node.jsmongodbmongoosebackendmongoose-schema

解决方案


试试这个 .populate([ 'keys', 'fields' ])


推荐阅读