根据用户对mongoose的响应(mongo dB)动态创建采集字段

tjrkku2a  于 2022-11-13  发布在  Go
关注(0)|答案(1)|浏览(110)

我有一个数据库集合,其中有两种类型的用户。

**1.客户:**它们将具备所有基本功能。
**2.供应商:**除了可以创建、删除、更新和获取/查看车辆外,他们还将具有可用的基本功能。

假设供应商创建了一辆车辆,因此车辆ID将被添加到供应商的集合中,类似地:

{
  . /*other fields*/
  .
  .
  listings: [
   "uniqueId",
   "uniqueId2"
  ]
}

我做了一些搜索,发现要将车辆ID添加到listings,需要首先在mongoose中创建该字段,否则我的数据将无法通过mongoose插入到mongodb中。这会引起一个问题,即所有用户都有listings字段。
下面是我创建的用户模型:

const userSchema = new mongoose.Schema({
    user_type: {
        type: String,
        required: [true, "user type is required!"],
        enum: ["customer", "vendor", "Customer", "Vendor"],
        default: "customer"
    },
    listings: {
        type: Array,
    },//TODO: only create the listings array if the user type is vendor
});

因此,我的问题是,只有当user_type是vendor时,我才能创建这个listing字段吗?

ttcibm8c

ttcibm8c1#

正如mongoose文档中所定义的那样,Arrays有一个默认值[],所以你需要重写它。

const userSchema = new mongoose.Schema({
    user_type: {
        type: String,
        required: [true, "user type is required!"],
        enum: ["customer", "vendor", "Customer", "Vendor"],
        default: "customer"
    },
    listings: {
        type: [String], // can also be ObjectId
        default: undefined
    },
});

相关问题