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

标签 javascript node.js sequelize.js

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

相关文章:

file - nodejs - fs.createReadStream().pipe,如何知道文件大小问题

node.js - 同时使用 'Where' 和 'Include' 语句拉取数据

node.js - 使用 sequelize 进行简单选择时的数据库错误

javascript - 如何更新sequelize.query 中的多个列

javascript - 我应该如何将 HTML/CSS 内容发送到服务器?

c# - 嵌入 Webkit 时操作页面的最佳方式?

javascript - 从 Node.js 中的不同 IP 发送 HTTP 请求

node.js - 在mongodb中保持原子性

javascript - Gulp 任务依赖

Javascript/Node.js 异步循环