MongooseError с uuid при использовании импорта вместо require () - PullRequest
0 голосов
/ 23 октября 2018

Я получаю следующую ошибку:

MongooseError: document must have an _id before saving

Когда я пытаюсь создать объект (Campagne) с uuid с помощью моего API, используя:

import uuidv4 from 'uuid/v4';

Это работает, когда яuse:

const uuidv4 = require('uuid/v4');

Мой объект Campagne создан правильно с его uuid.

Вот полный код схемы моего объекта:

import * as mongoose from 'mongoose';
import uuidv4 from 'uuid/v4';

export const CampagneSchema = new mongoose.Schema({
    _id: { type: String, default: uuidv4 },
    dateDebut: Date,
    dateFin: Date,
    reduction: Number,
});

TSLint рассказатьмне использовать import вместо require() и подчеркнуть это как ошибку в моей IDE, но она определенно не работает, как показано выше.

Может кто-нибудь объяснить мне, почему это происходит, пожалуйста?

Для информации я использую инфраструктуру NestJS node.js с Typescript.

Для пояснения:

Я хочу знать, почему import работает для mongoose, но не дляuuid (require работает для uuid)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я нашел ответ с проблемой на Github node-uuid.Следующий код работает:

import {v4 as uuid} from 'uuid';

https://github.com/kelektiv/node-uuid/issues/245

import uuid from 'uuid/v4'; Синтаксис не работает, по крайней мере, в проекте Typescript v3, работающем на Node v10.9.0 (без webpack и babel, только ts-node для компиляции / запуска Typescript)

Я получаю следующую ошибку: TypeError: v4_1.uuid is not a function

с другой стороны, import {v4 as uuid} from 'uuid'; работает как положено

(проверено на uuid v3.3.2)

Спасибо за ответы.

0 голосов
/ 23 октября 2018

Удалить _id: { type: String, default: uuidv4 },

Mongoose автоматически сгенерирует _id

И использует const ddd = require(...)

Я считаю, что модули ES6 не работают в Node-проекте нормально

...