gpt4 book ai didi

javascript - Sequelize app.post : why "TypeError: Cannot read property ' create' of undefined"?

转载 作者:行者123 更新时间:2023-12-03 22:19:45 28 4
gpt4 key购买 nike

我想提出一个发布请求,发布我测试到 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com