将node.js和mongoose返回的GET请求保存到变量中
Save GET request return from node.js and mongoose to variable
我使用node.js和mongoose来执行几个HTTP请求,包括一个get请求。我的get函数将具有相当多的功能,为了简化对许多数据的处理,我试图让局部变量存储mongo的返回。例如:
router.get('/getstuff/:test', function(req, res) {
var testId = req.params.test;
var returnStuff = null;
var collection = req.collection;
collection.find({userIdd : testId}, function(err, data){
if (err) console.log(err);
else {
console.log(data); // works, data is shown in log
returnStuff = data; // does not work, data is not saved to returnStuff
}
});
console.log(returnStuff); // undefined
res.send();
});
我正试图将我从数据库(一个数组)中得到的内容返回到returnStuff变量,但由于关闭,我无法做到这一点。这可能看起来微不足道,但正如我所说,我将有更多的操作,这将真正简化事情。
有人有什么建议吗?真的很感激。
感谢
collection.find
是异步执行的,因此res.send在returnStuff填充之前执行。您可以完全去掉它,只在回调中使用res.send(数据)。
这应该有效:
router.get('/getstuff/:test', function(req, res) {
var testId = req.params.test;
var returnStuff = null; //optional, remove if you don't need it for anything else
var collection = req.collection;
collection.find({userIdd : testId}, function(err, data){
if (err) console.log(err);
else {
console.log(data); // works, data is shown in log
returnStuff = data;
collection.somethingelse(function(err,data2){
returnStuff += data2
res.send(returnStuff);
});
}
});
});
如果您有许多这样的操作,您可以将它们制作成一个库,或者使用async之类的库查看此伟大的资源以了解更多信息:http://book.mixu.net/node/ch7.html
阅读这篇文章,你就会知道一切!
相关文章:
- 在firefox扩展上观察并保存http请求
- JavaScript保存来自ajax请求的数据
- 仅在某些请求上保存用户会话
- 主干:在单个请求中批量保存模型
- 节点.js + 请求 - 保存远程文件并将其提供给响应
- 如何在Javascript(Google Drive API)中保存HTTP请求中的URI
- 如何使用 javascript 访问保存在请求范围内的数组或列表
- XMLHTTP 请求的 ASP 文件中需要什么才能将数据保存到数据库
- 主干网.js - 在不保存模型的情况下发出 POST 请求
- 无法使用node.js和请求保存远程映像
- 使用backbone.js在保存请求中发送额外的非模型数据
- 如何将ajax请求数据保存到不同的变量中
- 主干在保存后未使用save()发出put请求
- Backbone.js保存模型don't在android 2.x上引起ajax PUT请求
- 将node.js和mongoose返回的GET请求保存到变量中
- 如何使用PhantomJS保存AJAX请求的内容
- 如何在Node JS应用中使用express保存请求上下文?
- 在ASP中,什么是保存请求变量到一个框架的最好方法
- 对主干保存请求调用成功回调
- 烬自动保存排队保存请求