我想提出一个发布请求,发布我测试到 Postman 的路线的产品,但它不起作用。
在 postman 上,我刚刚:
{}
当我执行 console.log (req.body) 时,我会取回数据。
在我的终端上我有这个错误:
TypeError: Cannot read property 'create' of undefined
我的路线发布请求:
routes/Product/addProduct.js
— 这是错误发生的地方。const { Order } = require('../../models/Product/order');
const { Product } = require('../../models/Product/product');
const { ProductOrder } = require('../../models/Product/productOrder');
module.exports = app => {
app.post('/orders/create', (async (req, res) => {
try {
// Create and save the order
const savedOrder = await Order.create(req.body, { w: 1 }, { returning: true });
// Loop through all the items in req.products
req.body.products.forEach((item) => {
// Search for the product with the givenId and make sure it exists. If it doesn't, respond with status 400.
const product = Product.findById(item.id);
if (!product) {
return res.status(400);
}
// Create a dictionary with which to create the ProductOrder
const po = {
orderId: savedOrder.id,
productId: item.id,
qty: item.qty,
}
// Create and save a productOrder
const savedProductOrder = ProductOrder.create(po, { w: 1 }, { returning: true });
});
// If everything goes well, respond with the order
return res.status(200).json(savedOrder)
}
catch (error) {
console.error("Order creation server error: ", error);
res.status(500).send(error)
};
}));
}
我的模型:
models/Product/order.js
'use strict';
module.exports = (sequelize, DataTypes) => {
const Order = sequelize.define('Order', {
uuid: DataTypes.UUID,
address: DataTypes.STRING
}, {});
Order.associate = function(models) {
Order.belongsToMany(models.Product, {
through: 'ProductOrders',
as: 'products',
foreignKey: 'orderId',
otherKey: 'productId'
});
};
return Order;
};
models/Product/product.js
'use strict';
module.exports = (sequelize, DataTypes) => {
const Product = sequelize.define('Product', {
uuid: DataTypes.UUID,
title: DataTypes.STRING,
description: DataTypes.TEXT,
price: DataTypes.DECIMAL,
}, {});
Product.associate = function(models) {
Product.belongsToMany(models.Order, {
through: 'ProductOrders',
as: 'orders',
foreignKey: 'productId',
// otherKey: 'orderId'
});
};
return Product;
};
models/Product/productOrder.js
'use strict';
module.exports = (sequelize, DataTypes) => {
const ProductOrder = sequelize.define('ProductOrder', {
uuid: DataTypes.UUID,
productId: DataTypes.UUID,
orderId: DataTypes.UUID,
quantity: DataTypes.DECIMAL
}, {});
ProductOrder.associate = function(models) {
// associations can be defined here
};
return ProductOrder;
};
最佳答案
您正在导出函数并尝试将其解构为对象。试试下面的代码:
const Order = require('../../models/Product/order')(sequelize, DataTypes);
const Product = require('../../models/Product/product')(sequelize, DataTypes);
const ProductOrder = require('../../models/Product/productOrder')(sequelize, DataTypes);
关于javascript - Sequelize app.post : why "TypeError: Cannot read property ' create' of undefined"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449091/