このノード/ express関数は私にエラーを与えています: ヘッダーを送信した後で設定することはできません。 それが正常に動作するために使用されるが、私はこのような、「アドレス」下にあるすべてのアドレス項目を移動する、ユーザー・スキーマにいくつかの変更を行いました。Nodejs:送信後にヘッダーを設定できません
firstname,
lastname,
address:{
street,
city,
loc (array of numbers)
...
}
ので、新しい機能のルックスをこのような:
export function searchMembers(req, res) {
var lat = req.body.lat;
var lon = req.body.lon;
var zoom = req.body.zoom || 14;
var query = User.find();
\t var distance = 5000;
\t // when this line is removed, problem is gone:
\t query = query.where('address.loc').near({center:{type:'Point', coordinates:[lon,lat]}, maxDistance: distance, spherical:true});
\t query = query.where({'address.city': 'Toronto'}); \t
\t query = query.sort({'lastname': 1});
query.exec(function(err,users){
if(err) res.send(err);
var final = [];
_.forEach(users, function(x){
var obj = {};
obj.id = x._id;
obj.name=x.firstname + ' ' + x.lastname;
obj.latitude=x.address.loc[1] ;
obj.longitude=x.address.loc[0] ;
final.push(obj);
});
res.status(200).json(final);
});
}
だから私はこれを実行すると、私は面白いエラーが発生します:彼らが送信された後にヘッダーを設定することはできません。 res.status(200).json(final);関数の最後の行を指す 。
私は根本的な原因を見つけるために物を排除しようとしました。 'near'関数でwhere行を削除すると、問題はなくなります。 私は他のフィルタリングをテストのためだけに追加しました。この問題のみが問題を引き起こしています。
エラー処理を 'if(err)return res.send(err)'に変更できますか?私の推測では、エラーがスローされ、 'res.send'が呼び出され、その後、最後の' res.status'が呼び出され、エラーが発生します。 –