如何根据node.js中的其他字段值动态生成mongoose模式?

如何根据node.js中的其他字段值动态生成mongoose模式?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我想使用mongoose根据条件动态定义模式 模式 如何使用mongoose实现这种模式。这取决于您对数据库的处理方式。您可以简单地创建两种类型,标识符为Advance和Basic,并使用中间件来维护流。现在回答你的问题: 比如: new mongoose.Schema({ type: String, //BASIC OR ADVANCE // only for type = BASIC name: String, age: Number, advance: [] 现在您可以检查adva

我想使用mongoose根据条件动态定义模式

模式
如何使用mongoose实现这种模式。

这取决于您对数据库的处理方式。您可以简单地创建两种类型,标识符为Advance和Basic,并使用中间件来维护流。现在回答你的问题: 比如:

new mongoose.Schema({

type: String, //BASIC OR ADVANCE

// only for type = BASIC
name: String,
age: Number,

advance: []
现在您可以检查advance是否为空。说真的,这完全取决于你的方法,你如何处理这个问题。声明架构后,您可以在不使用advance字段的情况下保存数据,如:

const MyModel = mongoose.model('Test', new Schema({ name: String }));
const doc = new MyModel();
doc.advance = {
    email: "test@test.com",
    password: 1234,
   PhoneNumber: 1234
}
doc.save();
但是如果你想知道这个模式,你会认为在你的文件中只有
name
age
,当你开始探索时,你会发现你在做类似的事情,并且使用了一个合适的结构。 将moongoose文档视为JavaScript对象,有一个原因就是它被称为非结构化数据。希望这个解释有帮助

const MyModel = mongoose.model('Test', new Schema({ name: String }));
const doc = new MyModel();
doc.advance = {
    email: "test@test.com",
    password: 1234,
   PhoneNumber: 1234
}
doc.save();