我遇到了一个过去几个小时似乎无法解决的问题。让我们来看看吧。
目前使用最新版本的express和mongoose
我在route.js中有以下路径查询:
Note
.findOne({"user": req.body.user, "title": req.body.title, "subtitle":
req.body.subtitle})
.exec(function (err, note) {
if (err) {handleError(err)};
console.log(note._id);
})
//same implementation as the in the mongoose docs
然后,我有一个客户端脚本,其中包含以下ajax请求:
let settings = {
type: 'GET',
url: 'http://localhost:8080/note',
data: {
"user": userId,
"title": noteTitle,
"subtitle": noteSubtitle
},
dataType: "json",
success: renderGetNoteTemplate
}
return $.ajax(settings);
现在的问题是,即使数据库和正确集合中存在文档,查询结果也为空。经过几个小时阅读本网站上的线程并登录到控制台后,我决定将查询记录到控制台并看到了这个!
_conditions: { subtitle: null, title: null, user: null }
因此传递的条件为null,显然将返回null。现在,这是捕获。查询适用于以下条件:
Note.findById(req.cookies.note).exec()
我能看到的差异是,请求不是来自身体。所以上面我通过ajax请求发送了条件,如
{"title": req.body.title}
最后,当我只是将req.body.title等打印到控制台而不将其传递给查询时,值就出现了。例如,我将Romeo And Juliet作为noteTitle传递,当我在服务器控制台上打印时,我得到了Romeo And Juliet的值。一旦我将其作为问题出现的条件传递给查询,它就会立即生效。
实际上到处都是,特别是我命名模型的方式等等。再次当我将req.body参数传递给条件时,我得到null结果。
同样为了简洁起见,我没有在代码中包含我需要bodyParser的内容,所以当值不进入查询条件时,值会显示出来。
是什么让这些参数变成空的想法?
由于
答案 0 :(得分:1)
应该是if (stat.count !== null) {
validStats.push(((stat: Object): StatWithCount))
}
而不是req.query
或req.body
,因为它是req.params
请求。
GET