0

次の問題があります。

リリース日などの追加情報とともに URL を Couchdb に保存しています。公開日が 12 時間以内のすべての URL を返すビューがあります。

奇妙なことに、それが機能することに驚いています。すなわち。データベースに触れずに 24 時間経過した後、最後のアクションが「減価償却」ビューを実行していくつかの URL を返したとき、次にこれが呼び出されたときにアイテムが返されません。

ビューがすべての要素に対して実行されているのではなく、最後にビューが実行されてから変更または追加された要素のみが実行されていることを読んだと思いました。ビューを 2 回目に実行すると、通常は 1 回目よりも高速になるのはこのためです。

ドキュメントがビューから「期限切れ」になる私の例では、編集が行われていなければ、これが起こるとは思っていませんでした。

どこが間違っていますか?

4

1 に答える 1

2

ビューの実装がドキュメント外のデータ (現在の日付など) に依存していないことを確認してください... そうしないと、CouchDB に実装されているキャッシュ メカニズムが完全に壊れてしまいます。

12 時間以内に公開された URL を取得するには、次のことを行う必要があります。

  1. 公開日のインデックスを生成します (のdateように並べ替え可能[2013,10,22,13,54]):

    function(o) {
      emit(o.date, null);
    }
    
  2. 必要な最も古い時間からインデックスをクエリします。

    GET /mydb/_design/myapp/myview?startkey=[2013,10,22,1,56]&include_docs=true
    
于 2013-10-22T11:59:19.267 に答える