Можете ли вы использовать пользовательские модели как SchemaTypes? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть схема User, определенная следующим образом:

const mongoose = require('mongoose');

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

module.exports = UserSchema;

Я также определила схему PendingRideRequest следующим образом:

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;

Мой вопрос: Могу ли я заменить тело requester на UserSchema?

Пример:

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 модель. Однако я просто хотел бы знать, возможно ли использование пользовательской модели в качестве типа схемы, чтобы сделать мой код менее избыточным.

1 Ответ

0 голосов

Да, вы можете, ссылаясь на схему.

Но это очень простая проблема, вы должны были поискать ее раньше, поскольку она находится в mon goose документах. В любом случае,

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 : Вы должны использовать заполнение, чтобы заполнить поле «запрашивающий» данными, прежде чем получить к нему доступ, иначе он просто вернет «ID» «пользователя», связанного с ним (как запросчик).

Надеюсь, это поможет?

...