2015-12-30 48 views
1

在Sailsjs控制檯,我試圖將的MySQL數據庫上執行使用水線/帆的query()方法原始的SQL查詢。不過,我不斷收到錯誤消息: Model.query()返回 「未定義」 錯誤

 

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', 
    }] 
 

互聯網搜索表明帆-mysql的適配器應該用於連接;這就是我正在使用的問題,並且問題仍然存在。

配置/ 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'} 
} 
 

配置/ models.js文件

 

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

}; 
 

我跑帆MySQL的v0.11.2sails v0.11.2,這是該軟件最穩定的版本。

我缺少什麼其他設置可以在Sailsjs上執行原始SQL查詢?谷歌並沒有太大的幫助。

謝謝。

回答

2

exec在使用ORM功能時是必要的,因爲在內部它會建立一個SQL語句爲exec cuted在稍後的階段。另一方面,query接受字符串SQL語句和回調作爲其參數,並且對於exec沒有用處,因此它未定義。試試這個:

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

哇!如果我更關注這些示例,我可能已經看到*** exec()***在用於其他功能時未用於query()。非常感謝您的幫助。 –