所以我有一个db_functions.js文件,其中包含一些与数据库交互的函数。这是其中的一部分:
function getUsers(client, fn){
//var directors = {};
client.keys('*', function(err, keys){
keys.forEach(function(key){
client.hgetall(key, function(err, vals){
fn(key, vals);
});
});
});
我在另一个文件中使用getUsers函数:
router.get('/accounts', function(req, res){
var dir = {};
db_functions.getUsers(client, function(key, vals, cb){
dir[key] = vals;
cb(dir);
function cb(f){
var final_dir = {};
console.log(f)
res.json(f);
}
}
)});
我正在尝试使用回调从数据库获取一些信息,使用该信息更新JSON对象,当我使用所有信息更新对象时,将JSON对象作为响应发送。
问题出现在cb函数中,res.json被多次调用,这给出了“在发送后无法设置标题”错误。只有在dir完成更新后才能调用res.json
答案 0 :(得分:2)
只有在dir完成更新后才能调用res.json
为什么不在收集完所有数据后才调用def sequence(lo: List[Option[A]]): Option[List[A]] = lo.flatten match {
la: List[A] if(la.length == lo.length) => Some(la)
_ => None
}
回调?
getUsers
答案 1 :(得分:-2)
你的意思是AJAX回调方法吗? 像:
var jqxhr = $.get( "example.php", function(return_data) {
console.log( return_data );
})
.done(function() {
console.log( return_data );
})
.fail(function() {
console.log( return_data );
})
.always(function() {
console.log( return_data );
});