これは、使用しているように見えるパッケージのAPIドキュメントからのものです(私の強調):
Database#each(sql、[param、...]、[callback]、[complete])
指定されたパラメーターを使用してSQLクエリを実行し、結果行ごとにコールバックを呼び出します。この関数は、データベースオブジェクトを返し、関数の連鎖を可能にします。パラメータは関数と同じですがDatabase#run
、次の違いがあります。
コールバックの署名はですfunction(err, row) {}
。結果セットが成功したが空の場合、コールバックは呼び出されません。他のすべての場合、コールバックは取得された行ごとに1回呼び出されます。呼び出しの順序は、結果セットの行の順序に正確に対応しています。
すべての行コールバックが呼び出された後、完了コールバックが存在する場合は呼び出されます。最初の引数はエラーオブジェクトであり、2番目の引数は取得された行の数です。関数を1つだけ指定すると、行のコールバックとして扱われます。2つを指定すると、最初の(==最後から2番目の)関数が行のコールバックになり、最後の関数が完了のコールバックになります。
クエリが返す行数が非常に限られていることがわかっている場合は、Database#allを使用してすべての行を一度に取得する方が便利な場合があります。
したがって、コードは次のようになります。
var sql = "SELECT pid, collection , photo FROM photos WHERE collection = '"+collection_id+"' AND pid = '"+photo_id+"' ";
db.each(sql, function(err, row) {
console.log("PHOTO FOUND");
//code inside the callback function
}, function(err, rows) {
if (rows == 0) {
//code I want
}
});