2015-10-20 93 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