报错的原因:多次res.send()数据导致
报错代码展示:
exports.applyFriend = function (data, res) {
let wherestr = { 'userID': data.uid, 'friendID': data.fid }
Friend.countDocuments(wherestr).then(result => {
if (result == 0) {
buildFriend(data.uid, data.fid, 2)
buildFriend(data.fid, data.uid, 1)
res.send({ //第一次执行
code: 200,
msg: '好友申请成功'
})
} else {
upFriendLastTime(data.uid, data.fid)
}
inserMsg(data.uid, data.fid, data.msg, 0, res)
res.send({ //第二次执行
code: 401,
msg: '请勿重复申请'
})
})
}
这部分代码中全局和局部都有res.send(),会导致res.send()执行两次。尽量避免出现这样的问题
修改后的代码:
exports.applyFriend = function (data, res) {
let wherestr = { 'userID': data.uid, 'friendID': data.fid }
Friend.countDocuments(wherestr).then(result => {
if (result == 0)
buildFriend(data.uid, data.fid, 2)
buildFriend(data.fid, data.uid, 1)
res.send({ //将该片段代码都放进局部即可
code: 200,
msg: '好友申请成功'
})
} else {
upFriendLastTime(data.uid, data.fid)
res.send({
code: 401,
msg: '请勿重复申请'
})
}
inserMsg(data.uid, data.fid, data.msg, 0, res)
})
}
确保res.send()只会执行一次即可