【问题标题】:Can you use user-defined Models as SchemaTypes?您可以将用户定义的模型用作 SchemaTypes 吗?
【发布时间】:2020-06-18 17:34:46
【问题描述】:

我有一个User Schema,定义如下:

const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
  email: String,
  password: String,
  firstName: String,
  lastName: String,
  validSpotTypes: [String]
});

module.exports = UserSchema;

我还定义了一个PendingRideRequest Schema,如下所示:

const mongoose = require('mongoose');

const PendingRideRequestSchema = new mongoose.Schema({
  requester: {
    email: String,
    firstName: String,
    lastName: String,
    validSpotTypes: [String]
  },
  dateTime: Date,
  location: {
    lat: Number,
    lng: Number
  },
  parkingLot: String,
  spotType: String
});

module.exports = PendingRideRequestSchema;

我的问题:我可以用UserSchema 替换requester 的正文吗?

例子:

const mongoose = require('mongoose');
const User = require('./user');

const PendingRideRequestSchema = new mongoose.Schema({
  requester: User, //<-- Like this
  dateTime: Date,
  location: {
    lat: Number,
    lng: Number
  },
  parkingLot: String,
  spotType: String
});

module.exports = PendingRideRequestSchema;

注意:我不打算将password 之类的用户敏感信息添加到PendingRideRequest 模型中。但是,我只想知道是否可以使用用户定义的模型作为 SchemaType,以减少我的代码冗余。

【问题讨论】:

    标签: javascript node.js mongodb mongoose mern


    【解决方案1】:

    是的,你可以,通过引用架构。

    但这是一个非常简单的问题,你应该以前查过它,因为它在 mongoose docs. 总之,

    const UserSchema = new mongoose.Schema({
      email: String,
      password: String,
      firstName: String,
      lastName: String,
      validSpotTypes: [String]
    });
    
    const PendingRideRequestSchema = new mongoose.Schema({
      requester: [{ type: Schema.Types.ObjectId, ref: 'User' }]
      dateTime: Date,
      location: {
        lat: Number,
        lng: Number
      },
      parkingLot: String,
      spotType: String
    });
    

    PS:您应该在访问之前使用 populate 用数据填充“请求者”字段,否则它只会返回链接到它的“用户”的“ID”(作为请求者) .

    希望这有帮助吗?

    【讨论】:

    • 我认为 PendingRideRequestSchema 中的请求者字段不需要是数组。
    猜你喜欢
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 2016-09-01
    • 2014-10-19
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多