node.js - 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 } ]
解决方案
试试这个 .populate([ 'keys', 'fields' ])
推荐阅读
- javascript - 为什么我的 JavaSript 函数的输出未定义?
- json - Angular Json Pipe TypeError:将循环结构转换为 JSON
- c# - 我有一个 C# 解决方案,其中同一个文件属于多个项目。如何?
- c# - 多个请求同时出现连接字符串错误
- ios - UILabel sizeToFit 不计算长自动换行换行符
- swiftui - 如何在 SwiftUI 创建/使用 \.Identifier?
- flutter - Flutter 闪屏视频播放器
- java - 生成所有可能的二叉搜索树的空间复杂度
- java - 如何从文件中获取图像和图像名称?
- javascript - React-router 嵌套路由重新渲染