(node:31873) UnhandledPromiseRejectionWarning: TypeError: It



每当我想使用Postman发出POST请求时,我都会得到这个错误:TypeError: Item不是构造函数。知道为什么吗?我的代码在这里:

const Item = require('../model/item.js');
const createItem = async(req,res) => {
const category = await categoryService.findCategoryByName(req.body.category);
const newItem = new Item({
name: req.body.name,
created: new Date(),
category: [category],
quantity: req.body.quantity,
});
try{
await newItem.save();
res.status(201).json(newItem);
}catch(error){
res.status(404).json({message: error.message});
}
};

和item.js:

const mongoose = require('mongoose');
const categSchema = require("./category.js")
const itemSchema = mongoose.Schema({
name: {type: String, required: true},
created: {type: Date, required: true, unique: true},
category: [categSchema.categorySchema],
quantity: {type: Number, required: true}
});
var itemData = mongoose.model("itemData", itemSchema);
module.exports.itemData = itemData;
module.exports.itemSchema = itemSchema;

您正在导入整个exports对象,而不仅仅是它的一部分。该对象不是构造函数(它根本就不是函数)。

查看您的导出:根据文档(我不使用Mongoose),mongoose.model返回构造函数。所以:

  1. 使用构造函数的标准命名(ItemData,而不是itemData)导出,和

  2. 导入它而不是整个exports对象

例如:

module.exports.ItemData = mongoose.model("itemData", itemSchema);
module.exports.itemSchema = itemSchema;

并导入它(通过从exports对象解构它):

const { ItemData } = require("../model/item.js");
//    ^−−−−−−−−−−^−−−−−−−−− destructuring

那么,new ItemData应该可以工作。

或者,导入整个内容(const item = require(/*...*/);),然后使用new item.ItemData

相关内容

  • 没有找到相关文章

最新更新