我想在猫鼬模式中添加动态字段

问题描述 投票:0回答:1

我正在使用 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 express mongoose mongoose-schema
1个回答
0
投票

创建“动态模式”似乎并不真正符合 MongoDB 精神。事实上,MongoDB 不支持任何类型的模式,Mongoose 支持!由于它们是在代码中定义的,因此它们不是很动态。

在我看来,您正在寻找 mongoose strict 选项(默认启用)
它可以被禁用。它允许您保存数据库中的任何字段,甚至是模型中未定义的字段。不过,您将失去猫鼬对这些字段的控制(类型/值检查、默认值、关系等)。

© www.soinside.com 2019 - 2024. All rights reserved.