每當我想使用 Postman 發出 POST 請求時,我都會收到此錯誤:TypeError: Item is not a constructor。知道為什么嗎?我的代碼在這里:
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;
uj5u.com熱心網友回復:
您正在匯入完整的exports物件,而不僅僅是其中的一部分。該物件不是建構式(它根本不是函式)。
查看您的匯出:根據檔案(我不使用貓鼬),mongoose.model回傳一個建構式。所以:
使用建構式的標準命名(
ItemData, 而不是itemData)匯出它,并且匯入它而不是整個匯出物件
所以例如:
module.exports.ItemData = mongoose.model("itemData", itemSchema);
module.exports.itemSchema = itemSchema;
并匯入它(通過從匯出物件中解構它):
const { ItemData } = require("../model/item.js");
// ^??????????^????????? destructuring
那么,new ItemData應該作業。
或者,匯入整個內容 ( const item = require(/*...*/);) 然后使用new item.ItemData.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/330478.html
標籤:javascript 节点.js 猫鼬
