我正在使用我的公司数据库,我正在尝试建立一条路线。我得到的数据是一个1000个值的JSON数组。
这是函数 -
router.get('some_route', function(req, res, next){
var ress = [];
var name = req.params.name;
baWelcomeController.autoComplete(name).then(function(succ){
var x = Object.values(succ[0][0]);
res.status(200).send(x);
}).catch(function(err){
res.status(404).send(err);
console.log("error in router.get", err);
});
});
现在看看我的代码的object.values
部分,从互联网上我知道了它的O(n)函数,因此nodejs应该将它推入调用堆栈并同时执行其他函数,但是正在发生的是我得到了预期的回应。 succ []中的值的数量是1000,所以我编写了另一个注释Object.values并编写for循环的函数 -
router.get('some_route', function(req, res, next){
var ress = [];
var name = req.params.name;
baWelcomeController.autoComplete(name).then(function(succ){
var x = 0;
for(var i = 0; i <= 1000; i++)
x += i;
res.status(200).send(x);
}).catch(function(err){
res.status(404).send(err);
console.log("error in router.get", err);
});
});
现在我没有得到x的值作为响应我得到一个空对象。我发现这种行为很奇怪!有人可以向我解释一下。
答案 0 :(得分:2)
它认为这可能会将你的号码变成一个对象。根据文档,send可以接受Buffer,String或Array。
https://expressjs.com/en/4x/api.html#res.send
尝试类似:res.status(200).send({num:x});
答案 1 :(得分:0)