Javascript 使用NodeJS和Mongoose从MongoDB获取无模式数据的未定义对象
我试图在mongoDB中使用mongoose做一些模型,在工作过程中使用mongoose作为无模式保存数据效果很好,但当我尝试获取数据时,出现了问题 这是模型创建代码:Javascript 使用NodeJS和Mongoose从MongoDB获取无模式数据的未定义对象,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我试图在mongoDB中使用mongoose做一些模型,在工作过程中使用mongoose作为无模式保存数据效果很好,但当我尝试获取数据时,出现了问题 这是模型创建代码: const TemplateSchema = new Schema({ any: {}, blog: { type: Schema.Types.ObjectId, ref:'blogs' }, user:{ type: Schema.Types.Ob
const TemplateSchema = new Schema({
any: {},
blog: {
type: Schema.Types.ObjectId,
ref:'blogs'
},
user:{
type: Schema.Types.ObjectId,
ref:'users'
},
date:{
type: Date,
default: Date.now
}
},{ strict: false });
保存代码:
let newTemplate = {
tempbody: { name: 'Laith', age: 26 },
blog: blog.id,
user: req.session.userid,
}
//console.log(inputObject);
new Template(newTemplate).save()
.then((template) => {
res.redirect(`/blogs/posts/${req.params.blogid}`);
});
Template.findOne({_id: req.params.templateid}).populate('blog').then(template =>{//To Fetch ObjectID for Blog from DB
if(template && template.blog.blogID == req.params.blogid) {
console.log(template.tempbody);
res.render('blogs/addPostTemplate', {
template: template,
blogid: req.params.blogid,
templateid: req.params.templateid
});
} else {
res.redirect(`/blogs/posts/${req.params.blogid}`);
}
});
获取代码:
let newTemplate = {
tempbody: { name: 'Laith', age: 26 },
blog: blog.id,
user: req.session.userid,
}
//console.log(inputObject);
new Template(newTemplate).save()
.then((template) => {
res.redirect(`/blogs/posts/${req.params.blogid}`);
});
Template.findOne({_id: req.params.templateid}).populate('blog').then(template =>{//To Fetch ObjectID for Blog from DB
if(template && template.blog.blogID == req.params.blogid) {
console.log(template.tempbody);
res.render('blogs/addPostTemplate', {
template: template,
blogid: req.params.blogid,
templateid: req.params.templateid
});
} else {
res.redirect(`/blogs/posts/${req.params.blogid}`);
}
});
假设结果是:
对象tempbody,但它始终提供未定义的
如果我尝试获取模板,它可以正常工作
如果我将模板打印为完整对象,它也会给出结果
有时给出:(节点:16840)[DEP0079]弃用警告:通过.inspect()对对象的自定义检查函数已弃用
非常感谢您的帮助。
tempbody
不是架构的一部分,因此不会保存它。调用新模板(newTemplate).save()
后,您是否检查了保存到db的内容?另外,您希望any:{},
做什么?您可能需要在模式中使用类似于tempbody:{type:schema.Types.Mixed}
@Molda的内容感谢您的回答,实际上它保存了tempbody对象,即使它不在那里,因为我请求了模式strict:false,因为它保存了tempbody对象,但是当我尝试获取它时,没有响应我的算法是,我有表单输入字段,这是随机的,根据用户的意愿。用户尽可能多地添加输入表单并给出值,因此在模式端,我不知道每个用户将形成什么,这就是为什么我希望使用无模式数据插入到数据库中