StrongLoop:它是否支持从MongoDB数据库的查询返回限制字段?

时间:2016-01-09 07:56:22

标签: mongodb loopbackjs strongloop

有人知道strongloop是否支持限制字段从Query for MongoDB数据库返回?我认为strongloop不支持所有MongoDB查询功能,所以我担心这可能不受支持。

这是我想用strongloop实现的目标:

Git's submodules

MongoDB操作示例(在数据库中执行):

不限制字段:

> db.Releases.find({epoch_time: {$gte: 1451417675, $lt: 1483717675}},{_id:0,release_id:0,event_id:0})
{ "epoch_time" : 1451417675 }
{ "epoch_time" : 1452717675 }
{ "epoch_time" : 1453717675 }
{ "epoch_time" : 1461207675 }
{ "epoch_time" : 1461407675 }
{ "epoch_time" : 1461417675 }
{ "epoch_time" : 1472717675 }
{ "epoch_time" : 1473717675 }

限制字段:

Release.find({where: {...query expression...} },
  {_id:0,release_id:0,event_id:0},  //trying to limit return fields
  function (err, releases) {
  ...
  }
);

我在StrongLoop中尝试过类似的东西,但我仍然可以查询查询中的所有字段。

 URL url = "http://my.site.php?data=hello"
 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");

        String line;
        StringBuilder sb= new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
        while ((line=br.readLine()) != null) {
            sb.append(line);
            response =sb.toString();
        }
        br.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return response;

谢谢, 卡洛斯

3 个答案:

答案 0 :(得分:2)

是的,loopbackjs支持限制查询中的字段。 mongodb和loopback查询中限制文件之间的差异是loopbackjs默认值在使用字段过滤器时将所有字段返回false。您必须明确说明要返回的字段。

Release.find({where: {release_id : 4}, fields: {epoch_time: true}},  //return only epoch_time
  function (err, releases) {
  ...
  }
);

fields filter docs

答案 1 :(得分:0)

根据strongloop文档 - https://docs.strongloop.com/display/public/LB/Querying+data

它提供了添加多个选项的功能,用于查询,过滤,限制两个REST端点以及模型方法中的数据。

您可以使用这样的远程方法限制输出中的字段 -

Release.find(
   { fields : {"epoch_time":true} 
}, function(err, releases) {
   // ... your code here
} );

或者您可以在https://docs.strongloop.com/display/public/LB/Operation+hooks -

中指定的操作挂钩中执行此操作
MyModel.observe('access', function logQuery(ctx, next) {
  console.log('Accessing %s matching %s', ctx.Model.modelName, ctx.query.where);
  next();
});

答案 2 :(得分:0)

在我们的模型中创建一个函数

MyModel.observe('access', function logQuery(ctx, next) {
        Release.find({
            where: {
                release_id: 4
            }
        });
    });