Как я могу использовать схему меньшего размера, на которую есть ссылка, внутри схемы большего размера? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь создать схему меньшего размера, которую можно повторно использовать в рамках схемы большего размера.

Определена моя схема «пользователей» (в другом файле)

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const noRights = require('../models/Roles').user_noRights;
const UserSchema = new Schema({
    // these are required to create a user
    name: {type: String, required: true},
    email: {type: String, required: true, lowercase: true},
    password: {type: String, required: true},
    role: {type: String, required: true, default: noRights},
})
module.exports = User = mongoose.model('users', UserSchema)

Это работает (но не использует меньшую "пользовательскую" схему)

const PostSchema = new Schema({
  text: {type: String, required: true },
  date: {type: Date,default: Date.now},
  user: { 
      type: Schema.Types.ObjectId, 
      ref: 'users'
  }
});

Вот меньшая "пользовательская" схема, которую я хотел бы использовать:

const userData = new Schema({
  type: Schema.Types.ObjectId, 
  ref: 'users' 
});

Меньший "пользовательздесь используется схема, и она не работает:

const PostSchema = new Schema({
  text: {type: String, required: true },
  date: {type: Date,default: Date.now},
  user: { type: userData },
});

Вот ошибка

C:\GitHub\node_modules\mongoose\lib\schema.js:717
[0]     throw new TypeError('Undefined type `' + name + '` at `' + path +
[0]     ^
[0]
[0] TypeError: Undefined type `Users` at `ref`
[0]   Did you try nesting Schemas? You can only nest using refs or arrays.

1 Ответ

0 голосов
/ 23 августа 2019

Я решил это с помощью модуля npm "deepPopulate" - очень приятно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...