Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize app.post:为什么;TypeError:无法读取属性';创建';“未定义”的定义;?_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript Sequelize app.post:为什么;TypeError:无法读取属性';创建';“未定义”的定义;?

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

我想发出一个post请求,发布我测试过的产品给邮递员,但它不起作用

关于邮递员,我刚刚:

{}

当我执行console.log(req.body)时,我会将数据取回

在我的终端上,我有以下错误:

TypeError:无法读取未定义的属性“create”

我的路线张贴请求:

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未定义或数据类型未定义
,但按照您的逻辑,它应该可以恢复模型