我的問題是理解一個範圍,如何恰當地使用回調函數。當我嘗試計劃時,我似乎無法將事件串起來。我在閱讀帖子時遇到了困難,並將它們與我目前的問題聯繫起來我想我真正得不到的是如何實現邏輯。
問題
我有是導致我的問題在我的應用程序的幾個場景。它們都是圍繞着我所需要的數據尚未在範圍內的情況。但是該函數已經有一個回調函數。
例
該功能用於插入數據到數據庫中。
updateProfile: function (req, res) {
pool.getConnection(function (err, connection) {
var email = req.body.email;
var sql = 'INSERT INTO rw_users SET email = ?';
var params = [email];
connection.query(sql, params, function (err, results, fields) {
if (err) {
res.status(500).send();
throw err;
}
connection.release();
});
});
},
該下一個函數需要剛創建的用戶的ID。
createCustomerProfile: function (email, id) {
merchant.createCustomerProfile(email, id, function callback(merchantRes){
pool.getConnection(function (err, connection) {
var sql = 'UPDATE rw_user SET auth_customer_id = ? WHERE email = ?';
var params = [merchantRes, email];
connection.query(sql, params, function (err, results, fields) {
if (err) {
throw err;
}
console.log('new customer created at authorize.net');
});
});
});
},
在功能updateProfile()
我創造我的數據庫中的新用戶。在第二個函數中,我需要在函數1中輸入的新創建用戶的ID。
請給我一種處理這種功能的方法。我需要第一個過程中的數據,以便在第二個功能中使用它。隨着它的發展,這種情況會變得更糟,因爲當函數2完成後,它將在它的API調用響應中產生一個新的customerID。該響應還需要進行另一個數據庫查詢以使用其ID來更新該行。然後一旦這兩個函數完成,我需要再次查詢數據庫以返回整行。
爲了打破這種下來,
- 在數據庫中創建用戶。
- 使用功能1.創建新用戶的ID和電子郵件與authorize.net API添加的新客戶賬戶ID獲取函數創建2
- 插入新的客戶ID從authorize.net API的響應放入在函數1中創建的新用戶行中。
- 返回整行。
我的問題很清楚。什麼是可能的解決方案,以便能夠執行類似於我的列表中的任務,並明確地實施它們以進行處理,以便我可以在範圍內使用來自每個任務的響應?
如果它們是兩個不同的函數,那麼使用回調作爲第三個參數來執行createCustomerProfile –
恐怕你的問題不清楚。是關於JavaScript的問題(如何在異步生成結果時將函數串在一起),還是關於MySQL並在插入後返回信息?另外:請保留無關的細節。你的整個第一段和大約一半的文本是無關緊要的,只會妨礙人們閱讀併爲你提供答案。 –
MySQL的問題(如果這是這是什麼)在這裏回答:http://stackoverflow.com/questions/31371079/retrieve-last-inserted-id-with-mysql一個簡單的搜索「nodejs MySQL獲取最後的ID」轉身它起來。更多關於搜索[這裏](/幫助/搜索)。 –