users.find不是函数nodejs

时间:2017-01-31 16:57:21

标签: node.js

所以我尝试在我的nodejs应用程序上实现jwt。

这是我的令牌方法:

app.post("/api/v1/token", function(req, res) {  
    if (req.body.email && req.body.password) {
        let email = req.body.email;
        let password = req.body.password;
        let user = users.find(function(u) {
            return u.email === email && u.password === password;
        });
        if (user) {
            let payload = {
                id: user.id
            };
            let token = jwt.encode(payload, cfg.jwtSecret);
            res.json({
                id: user.id,
                token: token,
                status:'success'
            });
        } else {
            res.sendStatus(401);
        }
    } else {
        res.sendStatus(401);
    }
});

如您所见,我将其推荐给用户模块。 然后我找到基于电子邮件和密码的用户。 它指的是我的用户js模块。

这是我的用户js模块:

var users = require('./app/api/users/login.js');
module.exports = users;  

登录js模块:

const db = require('../../config/db');
const abort = require('../../util/abort');

const ctl = {
  getAllUser(req, res, next) {
    db.any('SELECT * FROM users')
    .then((data) => {
      if (data.length === 0) {
        throw abort(404, 'No user data yet', 'Empty user table');
      }

      return res.status(200).json([{
        data,
      }]);
    })
    .catch(err => next(err));
  },
};

module.exports = ctl;

idk为什么,每次我尝试获取令牌。 它总是返回错误消息,如下所示: {   "状态":"错误",   " message":" users.find不是一个功能" }

请帮助我。 谢谢。

2 个答案:

答案 0 :(得分:0)

在您的login.js模块中,没有名为“find”的方法。尝试调用其中存在的方法,例如 getAllUser

答案 1 :(得分:0)

它提供users.find is not a function,因为在这种情况下users不是数组。 find()仅存在于数组中。您可以console.log(users)知道错误发生前的价值

进一步检查您的代码,您似乎在next(err)中返回login.js。如果您在调用getAllUser()时手动将回调包装为承诺,请检查errusers的任何意外处理