有人知道strongloop是否支持限制字段从Query for MongoDB数据库返回?我认为strongloop不支持所有MongoDB查询功能,所以我担心这可能不受支持。
这是我想用strongloop实现的目标:
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;
谢谢, 卡洛斯
答案 0 :(得分:2)
是的,loopbackjs支持限制查询中的字段。 mongodb和loopback查询中限制文件之间的差异是loopbackjs默认值在使用字段过滤器时将所有字段返回false。您必须明确说明要返回的字段。
Release.find({where: {release_id : 4}, fields: {epoch_time: true}}, //return only epoch_time
function (err, releases) {
...
}
);
答案 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
}
});
});