2017-05-10 6 views
0

たとえば、属性がsold_outの製品のリストを考えてみると、そのコレクションのすべての項目のフィールドを更新したいと考えています。この特定の例では結果のモデルをBookshelfJSコレクションからすべて更新するには?

は、のは、私がtrueとして設定し、そのフィールドを持つすべてのアイテムにフィールドsold_out = falseを設定したいとしましょう:

Product.where({sold_out: true}) 
.fetchAll() 
.then(soldOutCollection => { 
    return Promise.all(product => { 
    return product.save({sold_out: false}) 
    }) 
}) 

これは動作しますが、それは、コレクション内の項目ごとにクエリをトリガします。

一度にすべてのアイテムを更新する方法はありますか?

PS:私は私はあなたがこの方法を更新したい場合、あなたはこれを試してみたいかもしれないと思う直接

答えて

2

knex.jsを使用しないようにしようとしている:

Product 
.where({sold_out: true}) 
.save(
    {sold_out: false}, 
    {method: 'update', patch: true} 
) 
+0

この実行2つのクエリん - 最初のようにコレクション内のモデルをフェッチし、それらを更新します。 Collectionの複数の行を直接更新することはできません。私は本棚のAPIを理解していれば – j10

+1

は正しく上記の次のクエリを生成します: 'UPDATE製品のSET sold_out =「false」をWHERE sold_out =「真」' は、基本的にはそれらすべてを更新する1つのクエリを実行します。 – websoftwares

+0

はい。ご確認ありがとうございます。私はデバッグフラグを有効にし、検証しました。 – j10

関連する問題