【发布时间】:2019-04-06 13:20:14
【问题描述】:
我不明白为什么会收到 504 网关超时。
app.get("/api/exercise/log", function(req,res) {
let userId = req.query.userId;
let from = req.query.from;
let to = req.query.to;
let limit = req.query.limit;
console.log("limit1 " + limit);
User.findById(userId).exec(function (err,data) {
console.log("limit2 " + limit);
if (err) return err;
Exercise.find({userId: userId}).limit(limit).exec(function (err2,data2) {
console.log("limit3 " + limit);
if (err2) return err2;
let logArr = [];
logArr.push(data2);
let total = logArr[0].length;
let answer = Object.assign({}, data._doc, {log: logArr}, {total: total});
res.json(answer);
})
})
})
我的网址以 log?userId=555&limit=2 结尾。所有控制台日志(limit1、limit2、limit3)都按预期打印出“2”,但是我没有得到任何结果,只有超时。如果我更改该行以手动输入限制,例如
Exercise.find({userId: userId}).limit(2).exec(function (err2,data2) {
一切正常,我得到正确数量的结果。这是怎么回事?
【问题讨论】:
-
.limit(parseInt(limit))。所有参数都是“字符串”,函数需要一个数值。所以你需要parseInt()或类似的来转换它。 -
大声笑。明白了,谢谢。
-
有趣的是我在这里能找到的唯一其他相关问题是something I also commented on years ago 并且也从未得到答案:(。Web 服务器请求是“字符串”,所以请务必记住转换它们。位很惊讶
limit()的 mongoose 包装器不会自动执行此操作。考虑到几乎在其他任何地方进行类型转换的整个“模式”方法。
标签: javascript mongodb express mongoose mongodb-query