我正在使用Node / Hapi / Mongodb开发一个简单的应用程序,但是遇到了一个奇怪的问题。以下是处理分数添加/更新的方法;当我通过Insomnia / Postman向该端点发送一些数据时,它可以按预期工作。但是,当此POST来自其他应用程序时,我得到的结果很奇怪。每个字段的值始终为null(同样,仅当POST来自另一个站点时才会发生,但是我已经注销了请求有效负载,可以看到数据是正确的,只是在分配给对象时设置为null ,或尝试使用它作为查询)
server.route({
method: 'POST',
path: '/update-score',
handler: (request, h) => {
var scores = db.collection('scores');
var updateScore = new Promise((resp, rej) => {
console.log('payload ', request.payload);
scores.findOneAndUpdate({customerID: request.payload.customerID}, {$set: {customerID: request.payload.customerID, customerName: request.payload.customerName, highScore: request.payload.highScore}}, {upsert: true}, (err, res) => {
if (err) {
return rej(err);
}
else {
return resp(res);
}
})
});
return updateScore;
}
});
控制台正确注销了请求有效负载,但是在查询尝试使用它时为null / undefined。我还尝试过在mongo方法调用之外创建两个对象(如下所示),并且在控制台将这些预定义对象记录下来之后,那里的值也为null。即使我可以在定义这些对象后console.log request.payload,数据也很好。
server.route({
method: 'POST',
path: '/update-score',
handler: (request, h) => {
var scores = db.collection('scores');
var queryObj = {
customerID: request.payload.customerID
};
var updateObj = {
$set: {
customerName: request.payload.customerName,
highScore: request.payload.highScore
}
}
var updateScore = new Promise((resp, rej) => {
console.log('again ', request.payload);
scores.findOneAndUpdate(queryObj, updateObj, {upsert: true}, (err, res) => {
if (err) {
return rej(err);
}
else {
return resp(res);
}
})
});
return updateScore;
}
});
即使我可以记录request.payload并正确查看数据,记录queryObj
和valueObj
也会显示所有值null
。为什么我不能在任何地方使用request.payload值?
答案 0 :(得分:0)