无法在查询中分配 request.payload 值
Can't assign request.payload values in query
我正在使用 Node/Hapi/Mongodb 开发一个简单的应用程序,但 运行 遇到了一个奇怪的问题。下面是处理 adding/updating 分数的路由;当我通过 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 方法调用之外创建两个对象(如下所示),并且在控制台记录这些预定义对象后,那里的值也为空;尽管我可以 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;
}
});
记录 queryObj
和 valueObj
会显示所有值都是 null
,即使我可以记录 request.payload 并正确查看数据。为什么我不能在任何地方使用 request.payload 值?
长话短说,Insomnia/Postman 发送一个对象作为 POST 正文,但我是 JSON 从应用程序编码 POST;只需要在服务器上解析它!
我正在使用 Node/Hapi/Mongodb 开发一个简单的应用程序,但 运行 遇到了一个奇怪的问题。下面是处理 adding/updating 分数的路由;当我通过 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 方法调用之外创建两个对象(如下所示),并且在控制台记录这些预定义对象后,那里的值也为空;尽管我可以 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;
}
});
记录 queryObj
和 valueObj
会显示所有值都是 null
,即使我可以记录 request.payload 并正确查看数据。为什么我不能在任何地方使用 request.payload 值?
长话短说,Insomnia/Postman 发送一个对象作为 POST 正文,但我是 JSON 从应用程序编码 POST;只需要在服务器上解析它!