0

Azure Node.js SDK を使用していますが、次のクエリを実行するのに問題があります。

var ts1 = azure.createTableService(config.storageAccount, config.storageAccessKey, config.tableHost);
var query = azure.TableQuery
    .select()
    .from('users')
    .where('PartitionKey eq ?', '0')
    .and('FriendsSeeVideo eq ?', 'true')
    .and('Status eq ?', 'Active');

var firstTimeThrough = true;
for (f in friends){
    if (firstTimeThrough){
        query.and('UserID eq ?', friends[f].id);
        firstTimeThrough = false;
    }
    else query.or('UserID eq ?', friends[f].id);
}

画面にクエリを書き込むと、次のような Azure テーブル クエリが表示されます。

query = {"_fields":[],"_from":"users","_where":["PartitionKey eq '0'"," and FriendsSeeVideo eq 'true'"," and Status eq 'Active'"," and UserID eq '763424639'"," or UserID eq '1385552681'"," or UserID eq '100001386550915'"," or UserID eq '100001869159941'"],"_top":null,"_partitionKey":null,"_nextPartitionKey":null,"_rowKey":null,"_nextRowKey":null}

しかし、それは私が期待する結果を返していません。テーブル ストレージの条件を満たすユーザーが 1 人いて、結果として userID 763424639 のユーザーが返されるはずですが、そうではありませんか?

基本的に、私は友人セットを渡し、これらの人々がusersテーブルに存在するかどうかをテーブルストレージに尋ね、FriendsSeeVideo設定が有効になっている場合はそれらを返すようにしています。

誰かが私が間違っていることを見ることができますか?

4

2 に答える 2

0

単なる推測ですが、文字列「true」ではなく、ブール値の true を使用したいのではないでしょうか? これでは何が問題なのかを判断するのは困難です...おそらく、返されると予想される実際のエンティティを表示できます。

于 2012-11-02T07:32:52.317 に答える
0

フィールド [FriendsSeeVideo] を [FriendsSeeVideoView] のはずの間違った名前で呼んでいました。

私のコード例は、テーブルストレージからセットを比較して取得する方法を知りたい人に役立つので、この質問は SO のままにしておきます。

于 2012-11-03T04:42:22.570 に答える