【问题标题】:Unable to searchAndUpdate on BuildFire Datastore无法在 BuildFire 数据存储上搜索和更新
【发布时间】:2018-01-06 22:47:29
【问题描述】:

我正在尝试对我保存在 BuildFire 数据存储区中的一些数据运行 searchAndUpdate 操作。代码如下:

  function updateCategories(category) {
    var filter = {
      "displayPosition": {"$gte": category.displayPosition},
      "name": {"$not": category.name}
    };

    var updateTerms = {
      "$inc": {displayPosition: 1}
    };

    return Datastore.searchAndUpdate(filter, updateTerms, 'category');
  }

我使用的 Datastore.searchAndUpdate 函数只是一个包装器,它承诺了此方法的原始 BuildFire 版本。代码如下:

function searchAndUpdate(filter, record, tag) {
    var deferred = $q.defer();

    Buildfire.datastore.searchAndUpdate(filter, record, tag, function(err, status) {
      if (err) {
        deferred.reject(err);
      } else {
        deferred.resolve(status);
      }
    });

    return deferred.promise;
  }

每当我尝试运行此更新功能时,我总是收到 400 作为响应。这是我在控制台中看到的屏幕截图:

我已经在我的本地主机和实际的 Buildfire 平台上尝试过这个,但没有运气。我还尝试按照此处显示的方式(这是此方法的 sdk wiki 示例中显示的方式)以及普通搜索方法中显示的方式(其中使用“$json.”)构建搜索条件。搜索属性的前缀)。无论哪种方式,我尝试它都会收到相同的响应。我不确定我做错了什么,或者 BuildFire 端是否有问题,但我没有收到错误消息,所以我不确定发生了什么。

【问题讨论】:

  • 我认为您的过滤器对象可能已关闭。这是一个示例 {filter: {"$json.name":"Jane Doe"}
  • 我尝试按照您显示的方式使用过滤器对象,但我仍然收到 400 响应。 { filter: { "$json.displayPosition": {"$gte": category.displayPosition}, "$json.name": {"$not": category.name} }}

标签: buildfire


【解决方案1】:

过滤器错误,对于不等式搜索,您需要使用“$ne”而不是“$not”。 您可以在https://github.com/BuildFire/sdk/wiki/Search-Operators中查看所有搜索运算符

【讨论】:

  • 将其从 $not 更改为 $ne 修复了拒绝问题,但过滤记录的 displayPosition 属性仍然没有发生增量。我假设过滤器工作正常,因为我已经在普通搜索中对其进行了测试,并且它正确过滤了记录。有什么想法吗?
  • 你在哪一边运行这个?小部件或控制面板?
  • 我在控制面板上运行这个
  • @tbergen1,您可以重试修复已部署
猜你喜欢
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多