Javascript Sequelize app.post:为什么;TypeError:无法读取属性';创建';“未定义”的定义;?
我想发出一个post请求,发布我测试过的产品给邮递员,但它不起作用 关于邮递员,我刚刚: {} 当我执行console.log(req.body)时,我会将数据取回 在我的终端上,我有以下错误: TypeError:无法读取未定义的属性“create” 我的路线张贴请求:Javascript Sequelize app.post:为什么;TypeError:无法读取属性';创建';“未定义”的定义;?,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我想发出一个post请求,发布我测试过的产品给邮递员,但它不起作用 关于邮递员,我刚刚: {} 当我执行console.log(req.body)时,我会将数据取回 在我的终端上,我有以下错误: TypeError:无法读取未定义的属性“create” 我的路线张贴请求: routes/Product/addProduct.js — 这就是错误发生的地方 const { Order } = require('../../models/Product/order'); const { Produc
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;
};
'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;
};
'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;
};
models/Product/Product.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;
};
'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;
};
'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;
};
models/Product/productOrder.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;
};
'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;
};
'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);
不确定为什么它不起作用,但在我的例子中,我使用这种格式进行导入:
const Order=require('../../models/Product/Order').Order代码>,与定义模型的方法相同。您正在导出函数,但希望1。分解它们2。将它们用作返回的对象。因此,您不需要{}
导入时,您可能需要使用正确的参数执行导入的任何操作,以实际获取这些对象。@YannickK我已经这样尝试过了,但始终会遇到相同的错误ReferenceError:sequelize未定义或数据类型未定义
,但按照您的逻辑,它应该可以恢复模型