如果id在mongo集合中找不到,如何向客户端发送响应?

时间:2016-12-14 17:20:54

标签: node.js mongodb mongoose

当用户点击应用程序并且不属于用户管理集合时,我正在进行用户身份验证我想将用户ID发送给客户端,以便他可以请求访问权限。我们使用csp cookie获取用户信息。

所以在下面的代码中,如果User架构找不到useruid,我想将该信息发送给客户端,以便用户可以在请求访问表单中使用。在下面的代码中,当架构找不到useruid时它会抛出404 。知道如何解决这个问题吗?

user.controller.js

   function handleEntityNotFound(res) {
  return function(entity) {
    if (!entity) {
      res.status(404).end();
      return null;
    }
    return entity;
  };
}

    exports.current = function(req, res) {
      // console.log('username', req);
      User.findById(req.useruid)
          .populate({path: 'groups', select: '_id name', options: {sort: {name: 1}}})
      .execAsync()
    .then(handleEntityNotFound(res))
    .then(responseWithResult(res))
    .catch(handleError(res));
};

1 个答案:

答案 0 :(得分:1)

如果没有匹配,findById()会返回[]

尝试:

 exports.current = function(req, res) {
        User.findById(req.useruid, function (err, results) {
            if (err) { 
                console.log(err);
            }
            if (results.length) {
                responseWithResult(res);
            } else {
                handleEntityNotFound(res);
            }
        });