2017-02-09 5 views
1

現在、knexjsを使用してsqliteにデータを挿入していますが、奇妙な問題が発生しました。knexjsを使用してsqliteにデータを挿入するときに問題が発生する

このコードが正常にデータを挿入します。

knex.insert({"request":requestquery,"date":date}).into("requests") 
      .then(function (id) {}); 

をしかし、このコードは、データを挿入し、黙って失敗していません:

knex.insert({"request":requestquery,"date":date}).into("requests") 

なぜthenコードが重要なのですか?データを挿入する必要があるのはなぜですか?

答えて

0

then()を呼び出さない場合でも、依然として変更可能なクエリビルダーがあります。

var q = knex("requests"); 
q.toString(); 
// 'select * from "requests" 

q.where('id', 1).toString(); 
// 'select * from "requests" where "id" = 1' 

q.orderBy('bar').toString(); 
// 'select * from "requests" where "id" = 1 order by "bar" asc' 

// now query is actually executed and converted to promise 
var promise = q.then(res => console.log('got', res)); 

したがって、クエリービルダーは、プロミスA +仕様が「可」を呼び出すものです。クエリを1つずつ作成するのに使用できます。作成されたクエリは、ユーザーがトリガーするまではトリガーされません。

貴殿が約束していたことをうかがい知っていることの1つは、約束通りに返却すれば、その.then()関数が呼び出され、クエリがトリガーされるということです。

だから、これは内側のクエリに、次に呼び出すことなく動作します:

knex('mydata').then(() => { 
    return knex('otherdata'); // no need to call .then here 
}).then(otherDataResults => { 
    console.log(otherDataResults); 
}); 
関連する問題