ScriptDB类型等价的问题

时间:2013-07-15 08:47:08

标签: google-apps-script

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

  

这意味着如果你有一个带有数值的对象,你   可以查询相同的字符串版本。例如,如果您存储   对象{a:23},您可以查询{a:“23”}并且ScriptDb会找到   上一个对象。

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

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

1 个答案:

答案 0 :(得分: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
  }
}