我正在使用 MongoDB(Mongoose)、Node(Express)、React。
我想创建这个功能:创建集合。在这些集合中创建与这些集合相对应的产品。例如书籍收藏。
集合应具有必填字段:
id
、title
、description
。
产品还应该具有必填字段,以及将在集合创建级别添加的附加字段,也就是说,在创建集合时,我们应该能够为将来在集合中创建的产品添加附加字段。
我的收藏型号:
import mongoose from 'mongoose';
const CollectionSchema = new mongoose.Schema(
{
title: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
creator: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
additionalFields: {},
items: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Items' }],
},
{ timestamps: true }
);
export default mongoose.model('Collections', CollectionSchema);
我的商品型号:
import mongoose from 'mongoose';
const ItemSchema = new mongoose.Schema(
{
title: {
type: String,
required: true,
},
description: {
type: String,
required: true,
},
},
{ timestamps: true }
);
export default mongoose.model('Collections', UserSchema);
如何使用 mongoose 和express 来做到这一点?
我想找到一个库来在猫鼬中创建动态模式,但惨败。
创建“动态模式”似乎并不真正符合 MongoDB 精神。事实上,MongoDB 不支持任何类型的模式,Mongoose 支持!由于它们是在代码中定义的,因此它们不是很动态。
在我看来,您正在寻找 mongoose strict 选项(默认启用)
它可以被禁用。它允许您保存数据库中的任何字段,甚至是模型中未定义的字段。不过,您将失去猫鼬对这些字段的控制(类型/值检查、默认值、关系等)。