【问题标题】:findOne doesn't get any recordfindOne 没有得到任何记录
【发布时间】:2015-08-30 02:56:20
【问题描述】:
login: function (req, res) {
        var username = req.param('username');
        var password = req.param('password');

        User.findOne({username: username}, function (err, user) {
            if (err || !user) {
                return res.status('401').send("User with username \"" + username + "\" not found. Are you registered?");
            }
        ...

user 对象给我undefined,我总是在错误语句中结束。 username 变量具有正确的值。我创建记录的方法有效(因此我与数据库的连接没问题),当我查看数据库时,记录就在那里,所有正确的数据。

我也试过User.find().where({username: username}).exec(function (err, user) {,但没有成功...

关于我可以在哪里查看(调试或 smth)或问题可能是什么原因的任何建议?

【问题讨论】:

  • 旁注:Express' req.param() 已被弃用,可能会在未来的版本中删除。您应该直接引用req.paramsreq.queryreq.body
  • 您是否检查了.findOne() 提供的err 以了解任何可能的详细信息(例如console.error('Error', err);)?
  • @JonathanLonowski,问题出在模型声明中。您的提示为我指明了正确的方向。 errDetails: Error: ER_BAD_FIELD_ERROR: Unknown column 'users.passports' in 'field list'。我将发布一个带有解释的答案,以寻求其他人的帮助。

标签: mysql node.js sails.js


【解决方案1】:

乔纳森关于检查err 的评论为我指明了正确的方向。我的User 模型如下:

attributes: {
        // Relations
        passports: {
            model: 'Passport'
        },
//... other attributes

而且我还在Passport 模型中声明了关系belongsToerr 给出了Details: Error: ER_BAD_FIELD_ERROR: Unknown column 'users.passports' in 'field list',当然在我的数据库中的user 表中我没有passports 列。

结论:我在User 模型中有不必要的实体关系声明。这在MongoDB 上工作得很好,但显然在MySQL 上情况完全不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多