Model.query()返回“未定义”错误

时间:2015-12-30 03:02:14

标签: javascript node.js sails.js

 在Sailsjs控制台上,我试图在 MySQL query() 方法执行原始SQL查询> 数据库。但是,我一直收到错误消息:

 
sails> User.query('SELECT id from user').exec(console.log)
TypeError: Cannot call method 'exec' of undefined
    at repl:1:37
    at REPLServer.self.eval (repl.js:112:21)
    at Interface. (repl.js:239:12)
    at Interface.emit (events.js:117:20)
    at Interface._onLine (readline.js:203:10)
    at Interface._line (readline.js:532:8)
    at Interface._ttyWrite (readline.js:761:14)
    at ReadStream.onkeypress (readline.js:100:10)
    at ReadStream.emit (events.js:98:17)
    at emitKey (readline.js:1096:12)
 

正在运行水线的其他方法,例如 find() 成功执行。

 
sails> User.find().exec(console.log)
undefined
sails> null [ { email: 'xxxx',
    password: 'xxxxx',
    name: 'xxxx',
   }]
 

 Internet搜索表明应该使用 sails-mysql 适配器进行连接;这就是我正在使用的问题,问题仍然存在。

我的 config / connections.js 文件

 
module.exports.connections = {
  default_dev_mysql_server: {
    adapter: 'sails-mysql',
    host: '127.0.0.1',
    port: 3306,
    user: 'xxxxx',
    password: 'xxxxx',
    database: 'xxxxxx'}
}
 

我的 config / models.js 文件

 
module.exports.models = {
  schema: true,
  connection: 'default_dev_mysql_server',
  migrate: 'safe'

};
 

我正在运行 sails-mysql v0.11.2 sails v0.11.2 ,这是最稳定的软件版本。

我缺少哪些其他设置才能在Sailsjs上执行原始SQL查询?谷歌并没有太大的帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

使用ORM功能时,

exec是必需的,因为在内部,它会构建一个SQL语句,以便在稍后阶段进行exec。另一方面,query接受一个字符串SQL语句和一个回调作为其参数,并且对exec没有用处,因此它是未定义的。试试这个:

User.query('SELECT id from user', function(err, res){
  console.log(err, res);
});