0

我正在尝试对我保存在 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 端是否有问题,但我没有收到错误消息,所以我不确定发生了什么。

4

1 回答 1

2

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

于 2018-01-16T22:27:09.500 回答