2015-10-20 72 views
3

我使用Loopback來創建Rest API。需要根據集合中的特定列獲取不同的數據。 我試過以下,但它不工作,而不是下面的代碼片段也被取重複數據:loopback:不同的查詢

this.app.models.location.find(
       { 
        distinct: ("regionName", 
        {state: st}) 
       } 
       , 
       function(err, location){........} 

「RegionName」是「位置」收集的財產,我只需要爲選擇的狀態數據(狀態爲另一位置集合的屬性),由'st'表示。 謝謝。

回答

0

迴環框架尚未提供獨特的功能。
Mongo的數據庫查詢中使用不同的是如下:

db.runCommand ({ distinct: "<collection>", key: "<field>", query: { <query>} }) 

請參考以下鏈接:
https://docs.mongodb.org/manual/reference/command/distinct/

+0

你應該在你的用例中提出一個特性請求:https://github.com/strongloop/loopback-connector-mongodb/issues –

1

我現在有這方面的工作在我的項目。

下面是一些示例代碼(以幫助解釋你的問題)應該做你需要什麼...

// Distinct regions 

Locations.regions = function (cb) { 
    console.log('Locations.build'); 
    var ds = Locations.app.datasources.myDS; 
    var sql = "SELECT DISTINCT region FROM Locations ORDER BY region"; // here you write your sql query. 

    ds.connector.execute(sql, [], function (err, regions) { 

    if (err) { 
     cb(err, null); 
    } else { 
     cb(null, regions); 
    } 

    }); 

}; 

Locations.remoteMethod(
    'regions', { 
    http: { 
     path: '/regions', 
     verb: 'get' 
    }, 
    returns: { 
     root: true, 
     type: 'object' 
    } 
    } 
); 

**注:這是MySQL,但是你應該能夠修改查詢對於其他連接器**

+0

如果在model-config中映射它,你可以使用Locations.dataSource訪問數據源 – Black

2

我在下面的兩個例子回答:

1)沒有查詢,對「角色」集合的「名稱」字段只是不同:

var roleCollection = user.app.models.Role.getDataSource().connector.collection(user.app.models.Role.modelName); 
roleCollection.distinct("name", 
    function(err, records) { 
    if(err) { 
     return cb(err); 
    } else { 
     return cb(null, records); 
    } 
    }); 

2)與查詢,不同的「角色」集合的「名稱」字段中離開了以「管理員」的名稱的任何角色:

var roleCollection = user.app.models.Role.getDataSource().connector.collection(user.app.models.Role.modelName); 
roleCollection.distinct("name", { name: { $ne: 'admin' } }, 
    function(err, records) { 
    if(err) { 
     return cb(err); 
    } else { 
     return cb(null, records); 
    } 
    }); 

Loopback.io v2.29.1