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

MongooseError: document must have an _id before saving

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

import uuidv4 from 'uuid/v4';

Работает, когда я использую:

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)

3
Phie 23 Окт 2018 в 12:13

2 ответа

Лучший ответ

Я нашел ответ с проблемой на 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)

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

2
Phie 23 Окт 2018 в 09:47

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

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

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

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

0
Juntae 23 Окт 2018 в 09:19
52945342