#node.js #mongodb #mongoose
Вопрос:
Я пытаюсь соединить свою модель с именем «категория» с моей моделью «товар», но я получаю эту ошибку, которая не позволяет мне импортировать ее. Я не могу использовать require, потому что ES не поддерживает его, и он предлагает мне вместо этого использовать импорт.
Код:
const mongoose = require("mongoose");
import descData from "./category";
const itemSchema = mongoose.Schema({
name: {
type: String,
required: true,
},
created: {
type: String,
required: true,
unique: true,
},
category: [descData],
quantity: {
type: [String],
required: true,
},
});
var itemData = mongoose.model("itemData", itemSchema);
module.exports = itemData;
И вот мой код категории:
const mongoose = require("mongoose");
const descSchema = mongoose.Schema({
name: {
type: String,
required: true,
},
descripton: {
type: String,
},
});
var descData = mongoose.model("descData", descSchema);
module.exports = descData;
Ответ №1:
либо вы используете обозначения импорта для всего (но вам нужно будет установить «тип»: «модуль» в файле package.json и правильно экспортировать файлы модулей)
или вы используете обязательную нотацию везде
а это значит, что ты должен это сделать :
const descData = require("./category");
вот пример схемы в схеме. вы можете видеть, что вы помещаете не модель в схему, а схему в схему.
const childSchema = new Schema({ name: 'string' });
const parentSchema = new Schema({
// Array of subdocuments
children: [childSchema],
// Single nested subdocuments. Caveat: single nested subdocs only work
// in mongoose >= 4.2.0
child: childSchema
});
Комментарии:
1. Но затем я получаю ошибку: »
model
недопустимый тип в массивеcategory
«, относящийся к mongoose.model(….)2. я думаю, что в файле вашей категории вам следует сделать : module.exports = descSchema; потому что мангусту нужна схема
Ответ №2:
Вы используете модуль «CommonJS» и шаблоны модулей ES6 вместе, что не является жизнеспособным решением. Вы должны выбрать импорт/экспорт, предоставляемый ES6.
Вы можете сделать его доступным, добавив type: "module"
в свой пакет.json. Кроме того, теперь вам нужно использовать export
вместо module.exports
. Существует два способа экспорта: именованный экспорт и экспорт по умолчанию. Проверьте это для получения более подробной информации.
Внесите изменения в свой файл js:
import mongoose from 'mongoose';
import descData from "./category";
const itemSchema = mongoose.Schema({
name: {
type: String,
required: true,
},
created: {
type: String,
required: true,
unique: true,
},
category: [descData],
quantity: {
type: [String],
required: true,
},
});
const itemData = mongoose.model("itemData", itemSchema);
export default itemData;
Комментарии:
1. не будет работать, так как остальные файлы все еще используют синтаксис require.
2. Определенно, он должен либо следовать commonjs, либо es6 во всем проекте.