未定义Node.js / Express req.body

时间:2018-08-21 20:34:48

标签: node.js express post

我的发帖请求突然中断了,我似乎找不到该问题。在发布表单中,console.log正确返回UserID,但在函数内,console.log返回Undefined。

发布表格:

=IF(EndDate<DATE(YEAR(EndDate), 7,1),CONCATENATE(YEAR(EndDate)-1, "-", YEAR(EndDate)), CONCATENATE(YEAR(EndDate), "-", YEAR(EndDate)+1))

功能:

app.post("/loadTransactions", function(req, res, Data) {
  console.log(req.body.UserID)
  transactions.loadTransactions(req.body.UserID, function(label) {
    Data = label;
    res.send({message: Data});
    })   
  })

客户端:

loadTransactions({ UserID }, callback){
        console.log({UserID})
        var sql = `SELECT * FROM MyTable WHERE UserID = ${UserID}`
        var label
        database.Query(sql, function(result){
            label = result[0];
            callback(label)
            });
    }

1 个答案:

答案 0 :(得分:1)

在函数中,您正在从参数中破坏UserId,因此您需要传递一个具有UserId属性的对象,也可以选择不对其进行破坏,而只接收UserId

让我们看一个更简单,可行的示例:

// similarly to your post form
function first(a) {
  console.log(a); // { b: 1 };
  second(a);
}

// similarly to your loadTransactions
function second({ b }) {
  console.log(b); // 1;
  return b + 1;
}

这是您当前正在做的事情:

// similarly to your post form
function first(a) {
  console.log(a); // { b: 1 };
  second(a.b);
}

// similarly to your loadTransactions
function second({ b }) { // this tried to load a.b.b
  console.log(b); // undefined;
  return b + 1;
}

如前所述,另一种解决方案是根本不破坏结构:

// similarly to your post form
function first(a) {
  console.log(a); // { b: 1 };
  second(a.b);
}

// similarly to your loadTransactions
function second(b) {
  console.log(b); // 1;
  return b + 1;
}