2012-08-11 31 views
0

我是node.js世界的新手,所以我的問題對你來說可能很奇怪。 我很輕鬆的場景: 1)分貝插入行,獲取ID爲 該行2)插入乘行,他們每個人的使用ID我們先前得到如何正確地讓db在node.js中流動

沒有與流動問題...第2階段在我們從階段1獲得響應之前啓動,或者在我們完成插入之前完成所有階段(connection.end()被調用)之前啓動。

我試圖用異步模塊,但它並不能幫助我 讓我們在代碼中看到:

// open connection 

conn.query('INSERT INTO receipt SET ?', {postid: postGUID, body: body}, function(err, result) { 
    if (err) throw err; 
     console.log("ID: "+result.insertId); 

    conn.query('INSERT INTO imgs SET ?', {postid: result.insertId, link: imgSrc}, function(err, result) { 
     if (err) throw err; 

    }); 
}); 

conn.end(function(err) { 
    console.log("CLOSE CONNECTION"); 
    console.log(err); 
}); 

你能幫助我與它好嗎?

回答

2

由於conn.query最有可能是異步的,因此您在完成查詢之前正在關閉連接。快速解決方案可以是以下內容。

conn.query('INSERT INTO receipt SET ?', {postid: postGUID, body: body}, function(err, result) { 
    if (err) throw err; 
     console.log("ID: "+result.insertId); 

    conn.query('INSERT INTO imgs SET ?', {postid: result.insertId, link: imgSrc}, function(err, result) { 
     if (err) throw err; 

     conn.end(function(err) { 
      console.log("CLOSE CONNECTION"); 
      console.log(err); 
     }); 
    }); 
}); 

一個更好的解決方案可能是當過程結束時關閉連接。