NestJS - Вложение вложенного документа с помощью enum с использованием mongoose - PullRequest
0 голосов
/ 30 мая 2018

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

import  *  as  mongoose  from  'mongoose';
import  *  as  Stop  from  'stop-model';
    export  const  RouteSchema  =  new  mongoose.Schema({
    _id:  String,
    stop: [Stop],
    type: { type:  String, enum: ['INBOUND', 'OUTBOUND'] }
    }, {
    versionKey:  false,
    timestamps: { createdAt:  'createTime', updatedAt:  'updateTime' }
});

Где модель остановки - это интерфейс,

import { Document } from  'mongoose';
export  interface  Stop  extends  Document {
    _id:  String,
    stopName:  String,
    type:  StopType,
    createTime:  number,
    updateTime:  number
}

export  enum  StopType {
    PARKING=  'PARKING',
    WAYPOINT  =  'WAYPOINT',
    STOP  =  'STOP'
}

Однако при запуске я получаю ошибку ниже

TypeError: Неопределенный тип PARKING at StopType.PARKING Вы пробовали вкладывать схемы?Вы можете вложить только ссылки или массивы.

Моя цель - иметь список Stops в коллекции Routes.

У меня также есть StopSchema, определенный так:

import  *  as  mongoose  from  'mongoose';

export  const  StopSchema  =  new  mongoose.Schema({
    _id:  String,
    stopName:  String,
    type: { type:  String, enum: ['PARKING', 'WAYPOINT', 'STOP'] }
    }, {
    versionKey:  false,
    timestamps: { createdAt:  'createTime', updatedAt:  'updateTime' }
});

Я не уверен, как использовать StopSchema в качестве ссылки внутри RouteSchema.(Что-то в строках этого ответа Ссылка на другую схему в Mongoose , но способом NestJS).

1 Ответ

0 голосов
/ 04 июня 2018

В mongoose, чтобы ссылаться на другие схемы внутри схемы, вы должны использовать Schema.Types.ObjectId.
Так что в вашем случае код будет выглядеть так:

import  *  as  mongoose  from  'mongoose';

export  const  RouteSchema  =  new  mongoose.Schema({
    _id:  String,
    stop: { type: [{type: Schema.Types.ObjectId, required: false }] },
    type: { type:  String, enum: ['INBOUND', 'OUTBOUND'] }
    }, {
    versionKey:  false,
    timestamps: { createdAt:  'createTime', updatedAt:  'updateTime' }
});

Дайте мне знать, еслиэто помогает;)

...