如何发出将数组发布到服务器的请求?

时间:2020-09-28 10:56:03

标签: node.js angular typescript

我需要执行一个发送数组的请求。但是当我这样做时,我得到的结果是null

结果请求有效载荷

[  
  {nom_name: "Test", cost: 500, quantity: 1, parentOrder_id: 19}, 
  {nom_name: "35634", cost: 100, quantity: 1, parentOrder_id: 19}
]

结果预览

{
  address: null
  apartment: null
  code: null
  cost: null
  date_delivery: null
  floor: null
  hierarchyLevel: 1
  is_new: true
  name: null
  nom_name: null
  order_id: 40
  parentOrder_id: null
  payment: null
  quantity: null
  telephone: null
}

如何解决防止null值被发送到服务器的问题?这样发布请求就可以精确发送一个数组,而不是单个对象。

服务

create(order: Order[]): Observable<Order> {
    return this.http.post<Order>(`${env.url}/api/orders/create`, order);
}

ts:

  onSave() {
    const order: Order[] = 
    this.order.list.map(e => {
      const { order_id, ...rest } = e
      return ({ ...rest, parentOrder_id: 19 })
    })
    this._order.create(order)
      .subscribe(
        () => {
          console.log('Data Saved.')
        },
        error => {
          console.log(error)
        }
      );
  }

在服务器上,我正在使用Nodejs和ORM Sequelize。

node.js控制器:

module.exports.create =  function (req, res) {
    const order = db.orders.bulkCreate([
        {
            nom_name: req.body.nom_name,
            quantity: req.body.quantity,
            cost: req.body.cost,
            parentOrder_id: req.body.parentOrder_id
        }
    ])
    res.status(201).json(order);
};

1 个答案:

答案 0 :(得分:2)

我个人没有对续集进行很多工作,但是我很确定您需要直接传递request-body对象,因为git merge包含数据数组,因此req.body例如将为req.body.nom_name。此外,undefined被定义为在发送响应之前应等待的async-function

bulkCreate