2

と関数がありviewます。配列内のいくつかの値を単純に繰り返し処理し、それらを個別に発行しています。ただし、発行しているドキュメントのプロパティを除外したいと思います。私はそれを呼び出すことを望んでいましたが、それは何もしていないようです。値は引き続きプロパティと共に出力されます。これはインデックス作成を高速に保つための制限ですか? 私のマップ関数は次のようになります。mapCouchDBdelete

function(doc) {
  if (doc.type == 'user' && doc.spaces) {
    doc.spaces.forEach(function (space) {
      if (space.tokens) {
        space.tokens.forEach(function (token) {
          emit(token.token, space);
        });
      }
    });
  }
}

を放出する場所で、放出する前にそのプロパティspaceを削除したいと思います。tokensこのデータで他のトークンを公開したくありません。だから、私はこのように見えるようにコードを変更しましたが、運が悪かったです。トークンをそのままにして、完全なドキュメントを発行します。

function(doc) {
  if (doc.type == 'user' && doc.spaces) {
    doc.spaces.forEach(function (space) {
      if (space.tokens) {
        var tokens = space.tokens;
        delete space.tokens;
        tokens.forEach(function (token) {
          emit(token.token, space);
        });
      }
    });
  }
}
4

2 に答える 2

0

私たちもこの問題に悩まされてきました。

新しいオブジェクトを作成し、代わりにそれを発行することで、この問題を回避しました。

emit(token.token, {
  name :  space.name,
  id : space.id
  etc : etc
}

ほとんどの場合、完全な (子) ドキュメントを発行する必要はなく、必要なものだけを発行する必要があるため、これが最善の方法であることがわかりました。

于 2012-12-15T01:27:01.473 に答える