Sails.JS + MySQL:'where clause' 中的未知列 'NaN'

Sails.JS + MySQL: Unknown column 'NaN' in 'where clause'

这是我第一次使用 sails.js 和 mySQL 数据库,我真的很困惑这个错误。

我有一个名为 'company' 的控制器和模型。它与 mySQL 数据库中的 table 'company' 有关。 table 本身与两个名为 'module' 和 'user' 的 table 具有一对多关联(每个 user/module 必须与一个公司 ID 连接)。我已经在 MySQL 数据库中设置了外键。

问题是..每次我从这个控制器打开任何 page/action 时,都会出现这个错误:

    error: Sending 500 ("Server Error") response: 
 Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'
    at Query.Sequence._packetToError (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
    at Query.ErrorPacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:82:18)
    at Protocol._parsePacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)
    at Parser.write (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:62:12)
    at Protocol.write (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:37:16)
    at Socket.<anonymous> (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:75:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:764:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:426:10)
    --------------------
    at Protocol._enqueue (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:110:48)


    at PoolConnection.Connection.query (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:166:25)
    at PoolConnection.liveConnection.query (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:98:16)
    at __FIND__ (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/adapter.js:836:20)
    at afterwards (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:104:5)
    at /Users/alanyudh/Sites/matta/node_modules/sails-mysql/lib/connections/spawn.js:40:7
    at Pool.<anonymous> (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:51:14)
    at Handshake.Sequence.end (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:78:24)
    at Handshake.Sequence.OkPacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:87:8)
    at Protocol._parsePacket (/Users/alanyudh/Sites/matta/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:213:24)

Details:  Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'

这是我公司的型号:

    module.exports = {
  attributes: {
      name:{
        type:"string",
        required:true,
        unique:true,
        minLength: 2
      },
      type:{
        type:"string",
        enum: ['hq','sub'],
        defaultsTo: 'hq'
      },     
      desc:{
        type:"text",
        required:true
      },
      logo: {
        type: 'string'
      },
      address: {
        type: 'text'
      },
      city: {
        type: 'string'
      },
      region: {
        type: 'string'
      },
      country: {
        type: 'string'
      },
      zipcode: {
        type: 'string'
      },
      phone_number: {
        type: 'string'
      },
      website: {
        type: 'string'
      }
  },
};

我试过使用 'autoPK: false'、'schema: true'、添加 'columnName/fieldName',但它们都不起作用。

错误是什么意思? 我该如何解决?

非常感谢。

Oppening localhost:1337/company/index 是你的问题,不是任何 mysql 或其他 orm 问题!

这是一个路由配置问题。当您打开此 URL 时,默认的 sails 行为是您尝试通过默认的 REST api 访问特定的公司记录。检查默认休息 routes behavior

更明确地说,在您的案例中,sails 解释为您正在查询 ID "index" 不是数字 NaN 的特定公司,因此您会收到此错误。

RESTful routes, where the path is always /:modelIdentity or /:modelIdentity/:id.

对于你的具体情况,我没有确切的答案,但是,我需要指出你,同时在这里发泄我的沮丧,这是各种 API 的一个可悲的臭名昭著的问题,当他们这样做时没有足够具体地解决错误的原因,只是让异常堆栈懒惰地冒出到下一个错误处理程序。这通常会完全误导开发人员关于实际异常的原因。因此请务必注意,您看到的错误文本可能与实际问题相去甚远。好吧,至少你知道有问题。现在你必须运用自己的智慧和无穷无尽的变化或方法来解决这个问题。