Javascript 使用NodeJS和Mongoose从MongoDB获取无模式数据的未定义对象

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

我试图在mongoDB中使用mongoose做一些模型,在工作过程中使用mongoose作为无模式保存数据效果很好,但当我尝试获取数据时,出现了问题

这是模型创建代码:

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对象,但是当我尝试获取它时,没有响应我的算法是,我有表单输入字段,这是随机的,根据用户的意愿。用户尽可能多地添加输入表单并给出值,因此在模式端,我不知道每个用户将形成什么,这就是为什么我希望使用无模式数据插入到数据库中