【发布时间】:2016-04-05 19:34:46
【问题描述】:
我正在 Node JS 上使用 Google Cloud 平台 Datastore 开发应用程序。使用书架示例中的部分代码。
当我在带有 .filter() 的 runQuery 方法中使用 .order() 时,会返回错误代码 412 - 'Precondition Failed'。当我在没有 .order() 或 .filter() 的情况下这样做时,效果很好。我做错了什么?
在下面的代码中: list() 有效; readByQuery() 没有。
function list(limit, token, cb) {
var q = ds.createQuery(namespace, kind)
.limit(limit)
.order(config.order)
.start(token);
ds.runQuery(q, function (err, entities, cursor) {
if (err) {
return cb(err);
}
var hasMore = entities.length === limit ? cursor : false;
cb(null, entities.map(fromDatastore), hasMore);
});
}
function readByQuery(key, operator, value, limit, token, cb) {
var q = ds.createQuery(namespace, kind)
.filter(key+ ' ' + operator, value)
.order(config.order)
.limit(limit)
.start(token);
ds.runQuery(q, function (err, entities) {
if (err) {
console.log(err);
return cb(err);
}
cb(null, entities.map(fromDatastore));
});
}
方法 readByQuery() 返回:
[ApiError: Precondition Failed]
errors: [],
code: 412,
message: 'Precondition Failed'
谢谢
【问题讨论】:
标签: node.js google-app-engine google-cloud-datastore