所以在登录页面中,我通过get请求从angular向express发送凭据.我想做的是,如果在数据库中找到,发送响应并在angular中处理它,否则如果在db中找不到,我希望express发送错误响应并处理它angular error response函数,但我的代码不起作用.

Angular 控制器:

myapp.controller('therapist_login_controller', ['$scope', '$localStorage', '$http',
  function($scope, $localStorage, $http) {
    $scope.login = function() {
      console.log($scope.username + $scope.password);
      var data = {
        userid: $scope.username,
        password: $scope.password
      };
      console.log(data);
      $http.post('/api/therapist-login', data)
        .then(
          function(response) {
            // success callback
            console.log("posted successfully");
            $scope.message = "Login succesful";
          },
          function(response) {
            // failure callback,handle error here
            $scope.message = "Invalid username or password"
            console.log("error");
          }
        );
    }
  }
]);

应用程序.js:

  app.post('/api/therapist-login', therapist_controller.login);

控制器:

  module.exports.login = function(req, res) {

    var userid = req.body.userid;
    var password = req.body.password;
    console.log(userid + password);

    Credentials.findOne({
      'userid': [userid],
      'password': [password]
    }, function(err, user) {
      if (!user) {
        console.log("logged err");
        res.status(404); //Send error response here
        enter code here
      } else {
        console.log("login in");
      }
    });
  }

推荐答案

在带有ExpressJS的 node 中,可以使用res.status()发送错误:

return res.status(400).send({
   message: 'This is an error!'
});

在这里,你可以在promise 回复中捕捉到:

$http.post('/api/therapist-login', data)
    .then(
        function(response) {
            // success callback
            console.log("posted successfully");
            $scope.message = "Login succesful";

        },
        function(response) {
            // failure callback,handle error here
            // response.data.message will be "This is an error!"

            console.log(response.data.message);

            $scope.message = response.data.message
        }
    );

Node.js相关问答推荐

如何使用updateMany()和Node.js的方法?

JsonwebToken过期后如何注销和清除cookie?

Node.js中Redis的并发问题

如何从谷歌云中部署的应用程序连接到mongoDB Atlas?

为什么 mongoose 没有常规数组方法

使用 Google Drive API 按文件夹 ID 检索文件夹的内容

Rest-Api动态图像路径和Express除非

Prisma 和 Nextjs:重新部署之前内容不会更新

遇到 - TypeError:try 使用 Express(Node.js) 从 JSON 文件访问数据时无法读取未定义的属性(读取帖子)

如何获取文件的中间值?

mongoose 7.0.3 使用运算符 $and 严格搜索日期

如何使用 Remix 仅在客户端呈现组件?

MongoDB - 查找查询以判断是否存在少量字段,结合字段上的 AND

为什么当我使用waitForSelector时 Puppeteer 导致我的测试套件挂起 30 秒,即使我在页面和浏览器上调用关闭?

将 express js app.use() 移动到另一个文件

Mongodb 从文档中获取聚合结果中的特定属性

简单的 Node js 程序但执行顺序似乎不同?

在 PassportJS 中使用多种本地策略

按日期时间字段获取最新的 MongoDB 记录

要求('babel/register')不起作用