0

我想问上周是否有人对 ScriptDB 类型等效有问题。7 月 10 日,当我执行有关数值的查询时,只有带有数值的查询才返回正确的结果。在文档中说:

这意味着如果您有一个带有数值的对象,您可以查询相同的字符串版本。例如,如果您存储对象 {a: 23},您可以在 {a: "23"} 上进行查询,ScriptDb 将找到前一个对象。

但是带有字符串参数的查询的后一个版本没有返回任何内容。现在似乎没问题,两个版本都按预期工作。

最近有没有人注意到同样的问题?

4

1 回答 1

1

在您记录的那天,记录了一个与索引和解决整数值搜索相关的问题。

问题跟踪器中提出了一个解决方案。

https://code.google.com/p/google-apps-script-issues/issues/detail?id=2999

谢谢你的耐心; 我们相信根本问题现在已经解决。但是,我们没有追溯修复您在过去两天可能保存或重新保存的任何数据。您在此期间保存的任何数据都会安全存储,但如果数据类型不完全匹配,对这些对象的查询仍然会失败。例如,属性 {id: 4074} 将匹配 {id: 4074}(数字),但不匹配 {id: '4074'}(字符串)或 {id: true}(布尔测试)。

如果您需要在数据类型不完全匹配的情况下查询过去两天的数据,则需要通过从 ScriptDb 检索记录并在适当位置重写它们来重新保存记录,使用类似于下面的示例函数:

function resaveRecords() {
  var db = ScriptDb.getMyDb();
  var records = db.query({}); // get all records
  while (records.hasNext()) { // loop through records
    var item = records.next();
    db.save(item);            // resave with the same ScriptDb ID
  }
}
于 2013-07-15T10:35:41.857 回答