我正在使用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个用户满足表存储中的条件,结果应该返回用户ID为763424639的用户,但事实并非如此?
基本上,如果这些人存在于users表中,我会传入朋友集并询问表存储,如果他们启用了FriendsSeeVideo设置,则返回它们。
谁能看到我做错了什么?
答案 0 :(得分:0)
只是一个猜测,但也许你想使用布尔值true而不是字符串' true'?很难说出这是错误的......也许你可以向我们展示你希望被退回的实际实体。
答案 1 :(得分:0)
我用[FriendsSeeVideoView]错误的名称来调用[FriendsSeeVideo]字段。
我想我会把这个问题留在SO上,因为我的示例代码可以帮助有人想知道如何从表存储中比较和检索集合。