【问题标题】:Syncano conditional filtering on multiple fields在多个字段上进行 Syncano 条件过滤
【发布时间】:2016-08-04 04:38:35
【问题描述】:

我正在尝试列出类中的 DataObjects。我想根据多个字段的条件查询过滤 DataObjects 列表。 根据 field1 = xxx 或 field2 = xxx 选择 DataObject

例如: 在类库存中:

+----------------------------------+
| Item  |  Quantity  |  Price      |
+----------------------------------+
| X     |    10      |    30       |
|                                  |
| Y     |    20      |    10       |
+----------------------------------+  

var filter = {
        'Quantity': { '_eq': 10 } OR
        'Price': { '_eq': 10 }
    };

选择数量 = 10 或价格 = 10 的项目。如何实现?

【问题讨论】:

    标签: javascript node.js data-objects syncano


    【解决方案1】:

    执行此操作的最佳方法是将查询分解为两个单独的调用并将它们组合起来。 Syncano 使用 AND 来组合查询,因此对于 OR,您必须将它们分成两个单独的 API 调用。

    // v1 Syncano JS SDK
    var Syncano = require("syncano");  // CommonJS
    var connection = Syncano({accountKey: "ACCOUNT_KEY"}); // or API Key
    var DataObject = connection.DataObject;
    
    var list = {instanceName: "INSTANCE_NAME", className: "CLASS_NAME"};
    var filter1 = {
        'Quantity': { '_eq': 10 }
    };
    var filter2 = {
        'Price': { '_eq': 10 }
    };
    
    var QtyArray = [];
    var PriceArray = [];
    
    DataObject.please().list(list).filter(filter1).then(function(res){
        // res is an array of filter 'Quantity'
        QtyArray = res;
    });
    
    DataObject.please().list(list).filter(filter2).then(function(res){
        // res is an array of filter 'Price'
        PriceArray = res;
    });
    
    var comboArray = QtyArray.concat(PriceArray);
    

    【讨论】:

    • 这似乎是一个简单的解决方案,但我希望通过一个调用而不是 2 个来实现这一点。此外,此解决方案将需要一个额外的逻辑来删除从两个数组中添加的重复条目。跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2019-10-28
    相关资源
    最近更新 更多