在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查询?谷歌并没有太大的帮助。
感谢。
答案 0 :(得分:2)
exec
是必需的,因为在内部,它会构建一个SQL语句,以便在稍后阶段进行exec
。另一方面,query
接受一个字符串SQL语句和一个回调作为其参数,并且对exec
没有用处,因此它是未定义的。试试这个:
User.query('SELECT id from user', function(err, res){
console.log(err, res);
});