【发布时间】:2018-11-28 03:04:23
【问题描述】:
我在使用 Google Cloud DataStore 查询时遇到了一个奇怪的情况。
这是我的代码:
var cutoff = DateTime.UtcNow.AddDays(-30);
var query = new Query("message")
{
Filter = Filter.And(
Filter.Equal("type", type),
Filter.Equal("receiver", receiver),
Filter.Equal("sender", sender),
Filter.GreaterThanOrEqual("created", cutoff))
};
// type is integer, receiver and sender is string
异常日志如下所示:
Grpc.Core.RpcException: Status(StatusCode=FailedPrecondition, Detail="no matching index found. recommended index is:
- kind: message
properties:
- name: receiver
- name: sender
- name: type
- name: created
")
我已经检查了好几次,所有属性都确实存在。
下面说明了为什么我称之为奇怪:
当我删除属性 created 时,它工作正常:
var query = new Query("message")
{
Filter = Filter.And(
Filter.Equal("type", type),
Filter.Equal("receiver", receiver),
Filter.Equal("sender", sender)
};
// works fine
那引导我去思考created的属性是重点。
但是当我只使用created 时,它工作得很好。
var query = new Query("message")
{
Filter = Filter.And(
Filter.GreaterThanOrEqual("created", cutoff))
};
// works fine too
我不知道发生了什么。
任何帮助将不胜感激。
感谢阅读。
【问题讨论】:
标签: c# google-cloud-platform google-cloud-datastore