node.js - 尽管存在数据,猫鼬 populate() 仍返回未定义
问题描述
博客模型:
ar schema_blog=new mongoose.Schema({
owner:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
title:String,
image:String,
description:String,
created:{type: Date, default: Date.now},
likes: Number,
dislikes: Number,
comments:[{
type:mongoose.Schema.Types.ObjectId,
ref:Comment,
}]
});
var Blog=mongoose.model("blog",schema_blog);
module.exports=Blog;
评论型号:
var schema_comment=new mongoose.Schema({
text:String,
created:{type: Date, default: Date.now},
author:{
type:mongoose.Schema.Types.ObjectId,
ref:"User"
},
authorName:String
});
当我尝试在博客中填充评论时,我得到一个空对象。身份证是正确的。我不明白问题是什么。
var Comment=mongoose.model("comment",schema_comment);
Blog.findById(id).populate("comments").exec((err,b)=>{
console.log(b);
})
有人请解决问题。
解决方案
更新
ref
必须是字符串,您传递了未定义的变量。
var schema_blog = new mongoose.Schema({
owner: {
type: mongoose.Schema.Types.ObjectId,
ref: "User"
},
title: String,
image: String,
description: String,
created: {
type: Date,
default: Date.now
},
likes: Number,
dislikes: Number,
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: "comment", //This must be String
}]
});
module.exports = mongoose.model("blog", schema_blog);
填充comments
Blog.findById(req.params.id)
.populate("comments")
.exec(function(err, blogs) {
if (err) {
console.log(err);
} else {
res.render("blogs/show", {
blog
});
}
});
推荐阅读
- python - 将numpy矩阵的列与数组进行比较
- smtp - 如何在 Drupal 8 中覆盖 system.mail.yml?
- node.js - 我的回调函数没有被调用
- javascript - JavaScript:从表单 onsubmit 事件调用函数后,服务器端代码未执行
- angular - 如何在 Ionic 中修复“无法设置未定义的属性‘bindCallback’”?
- python - 获取字符串的子字符串
- c# - 在泛型参数上编写具有两组可能约束的泛型方法
- python-3.x - 用户输入作为函数参数
- asp.net - 记录已添加到数据库中,但使用 Asp.net ajax 未显示警报消息
- apache - 域不能与 www 一起使用,但在没有 www 的情况下也可以使用