我一直在我的Node应用程序中使用Koa设置GET请求,没有问题。但是,当我尝试使用POST请求来处理请求正文中的数据传递时,我遇到了一个问题。这是有问题的路线:
router.post("/api/player/name", async (ctx) => {
console.log('ctx.request.body: ', ctx.request.body); // {fullName: "John Smith"}
await Player.findOne(ctx.request.body)
.then(player => {
ctx.body = player;
})
.catch(err => {
ctx.body = "Error: " + err;
});
});
现在,当我在邮递员的请求正文中传递{fullName: "John Smith"}
时,我看到此控制台以ctx.request.body
的身份登录到我的Node终端中。但是在邮递员中,我得到的答复是:
错误:ObjectParameterError:findOne()的参数“过滤器”必须为一个对象,得到了{fullName:“ John Smith”}
我在这里想念什么?据我所知,这是对象的形式。我需要在这里调整什么?
我认为参数必须看起来像这样{ <field>: { $eq: <value> } }
Player.findOne({ fullName: { $eq: ctx.request.body.fullName } })
.then(player => {
ctx.body = player;
})
.catch(err => {
ctx.body = "Error: " + err;
});
您可以查看mongoose
文档以了解更多。