当前位置: 首页 > 面试题库 >

如何动态创建猫鼬架构?

刁钧
2023-03-14
问题内容

我有一个可以在MongoDB和mongoose上的node.js上运行的应用程序。我的应用程序只是发送/删除/编辑表单数据,为此,我有这样的猫鼬模型:

var mongoose = require('mongoose');

module.exports = mongoose.model('appForm', {
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [   
    {
        Name: {type: String},
        Text : {type: String},
    }
    ]
});

而且效果很好!

现在,我想向表单添加一个功能,以便用户可以添加一个或多个字段来表单并在其中输入文本并发布。在客户端上创建动态功能没问题,但是我知道我的mongoose.model必须正确构造。我的问题是:如何将变量值(动态创建的表单数据名称及其文本)添加到猫鼬模式?

我看到使用strict: falseSchema.Types.Mixed建议。但是,我不知道…我尝试了什么:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var feedSchema = new Schema({strict:false});

module.exports = mongoose.model('appForm', feedSchema);

有小费吗?提前致谢!


问题答案:

通过将strict: false选项作为第二个参数提供给Schema构造函数,将该选项应用于您现有的模式定义:

var appFormSchema = new Schema({
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [new Schema({
        Name: {type: String},
        Text : {type: String}
    }, {strict: false})
    ]
}, {strict: false});

module.exports = mongoose.model('appForm', appFormSchema);

如果您想保留feeds为完全无架构,则可以在其中使用Mixed

var appFormSchema = new Schema({
    User_id : {type: String},
    LogTime : {type: String},
    feeds : [Schema.Types.Mixed]
}, {strict: false});

module.exports = mongoose.model('appForm', appFormSchema);


 类似资料:
  • 问题内容: 我想让用户能够在我的Node应用程序中创建集合。我真的只见过猫鼬集合中的硬编码示例。有人知道是否有可能用猫鼬动态创建集合吗?如果是这样,那么一个例子将非常有帮助。 基本上,我希望能够在不同的集合中存储不同“事件”的数据。 IE事件:event1,event2,… eventN 用户可以在那里创建自己的自定义事件并将数据存储在该集合中。最后,每个事件可能有成百上千的行。我想让用户能够对他

  • 问题内容: 我刚开始是猫鼬。我有一个带猫鼬的创建脚本,该脚本用示例数据创建模式和数据库。 现在,我编写实际的应用程序。每次我的应用程序运行时,我是否需要创建模式对象,或者它已经以某种方式可用? 换句话说,我是否需要在每个使用猫鼬访问数据库的应用程序中运行此代码,还是仅在第一次运行此代码: 如果我有设置器/验证器/等,答案将如何变化? 问题答案: 一个定义就是让应用程序理解如何将数据从MongoDB

  • 我知道在最新版本的Mongoose中,您可以将多个文档传递给create方法,在我的例子中,甚至可以传递一个文档数组。 我的问题是数组的大小是动态的,所以在回调中创建一个对象数组会很有帮助。 文档中没有,但这样做可能吗?

  • 问题内容: 我正在尝试使用Mongoose制作动态条件,但是它并没有像我想象的那样起作用。 代码是这样的 如您所见,我正在尝试使用“索引”变量创建动态条件。有可能这样做吗? 先感谢您! 问题答案: 您需要分两步创建对象: 更新资料 现在,node.js 4+支持计算的属性名称,您可以一步完成此操作:

  • 问题内容: 我要在item.comments列表中添加评论。在响应中将其输出之前,我需要获取comment.created_by用户数据。我应该怎么做? 我需要在res.json输出中填充comment.created_by字段: comment.created_by是我的猫鼬CommentSchema中的用户参考。它目前只给我一个用户ID,我需要它填充所有用户数据,密码和盐字段除外。 这是人们所

  • 问题内容: 使用Mongoose将文档(记录)插入MongoDB有哪些不同的方法? 我目前的尝试: 知道为什么插入和保存在我的情况下不起作用吗?我尝试创建,它插入了2个文档而不是1个。这很奇怪。 问题答案: 的是该模型的一个实例方法中,当直接从被呼叫作为一个方法调用,在本质上静态的,拍摄对象作为第一参数。 将任何您想要的功能导出到外部。 有关Mongoose Docs的 更多信息,或考虑阅读Mon