2017-04-05 100 views
1
var query = Rx.Observable.fromCallback(dbConnection.query); 
var obs = query('select * from mytable where id = ?', ['389']); 
obs.subscribe(
    function(e) = {} 
); 

此代碼給我TypeError:無法讀取未定義的屬性'typeCast'。RxJS.fromCallback()不適用於MySqlJs查詢方法

爲MySqlJs查詢方法的文檔看起來是這樣的:

connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) 

當我登錄查詢返回[功能]。我究竟做錯了什麼?

回答

1

query功能將被傳遞給fromCallback,但是當它被稱爲它不會被綁定到dbConnection

你應該做這樣的事情:

Rx.Observable.fromNodeCallback(dbConnection.query.bind(dbConnection)); 

此外,你可能想fromNodeCallback

+0

這似乎工作,我使用節點雖然。 bind()是做什麼的,爲什麼從NodeCallback()看起來和我一樣。對不起,我是一名Java開發人員,所以我正在爲這個語言苦苦掙扎。 – Stampede10343

+1

節點回調遵循錯誤作爲第一個參數的模式,'fromNodeCallback'將這個考慮在內。而'綁定'是需要的,因爲'這個'在JS中很奇怪:http://stackoverflow.com/a/41391426/6680611 – cartant

+0

謝謝!這很有道理。來自Java這是非常明確的,但JS的動態使這樣的奇怪的東西。謝謝! – Stampede10343