collection.all().limit(n) 在 FOXX 中不起作用
collection.all().limit(n) not working in FOXX
我的 FOXX 播放应用程序中有这段代码
var geodata = new Geodata(
applicationContext.collection('geodata'),
{model: Geodatum}
);
/** Lists of all geodata.
*
* This function simply returns the list of all Geodatum.
*/
controller.get('/', function (req, res) {
var parameters = req.parameters;
var limit = parameters['limit'];
var result = geodata.all().limit(10);
if (limit != "undefined") {
result = result.slice(0, limit);
}
res.json(_.map(result, function (model) {
return model.forClient();
}));
});
根据文档,我应该可以在这里使用分页 - 我想通过给定的 'limit' 参数限制搜索结果,但这给了我一个错误
2016-05-16T14:17:58Z [6354] ERROR TypeError: geodata.all(...).limit is not a function
文档引用集合。您似乎正在使用 Foxx 存储库。 Foxx 存储库是集合的包装器,提供大部分相同的方法,但不是返回纯文档(或游标),而是将结果包装在 Foxx 模型中。
在你的情况下,你可能根本不想使用 Foxx 模型(你只是将它们转换回文档,可能只是删除了一些属性,如 _rev
和 _id
) 所以你可以简单地完全放弃存储库并直接使用你传递给它的集合:
var geodata = applicationContext.collection('geodata');
/** Lists of all geodata.
*
* This function simply returns the list of all Geodatum.
*/
controller.get('/', function (req, res) {
var parameters = req.parameters;
var limit = parameters['limit'];
var result = geodata.all().limit(10);
if (limit != "undefined") {
result = result.slice(0, limit);
}
res.json(_.map(result, function (doc) {
return _.omit(doc, ['_id', '_rev']);
}));
});
您不是第一个对存储库和集合之间的区别感到困惑的人,这就是存储库和模型将在即将发布的 3.0 版本中消失的原因(但您仍然可以在旧版 2.8 兼容服务中使用它们如果需要的话)。
我的 FOXX 播放应用程序中有这段代码
var geodata = new Geodata(
applicationContext.collection('geodata'),
{model: Geodatum}
);
/** Lists of all geodata.
*
* This function simply returns the list of all Geodatum.
*/
controller.get('/', function (req, res) {
var parameters = req.parameters;
var limit = parameters['limit'];
var result = geodata.all().limit(10);
if (limit != "undefined") {
result = result.slice(0, limit);
}
res.json(_.map(result, function (model) {
return model.forClient();
}));
});
根据文档,我应该可以在这里使用分页 - 我想通过给定的 'limit' 参数限制搜索结果,但这给了我一个错误
2016-05-16T14:17:58Z [6354] ERROR TypeError: geodata.all(...).limit is not a function
文档引用集合。您似乎正在使用 Foxx 存储库。 Foxx 存储库是集合的包装器,提供大部分相同的方法,但不是返回纯文档(或游标),而是将结果包装在 Foxx 模型中。
在你的情况下,你可能根本不想使用 Foxx 模型(你只是将它们转换回文档,可能只是删除了一些属性,如 _rev
和 _id
) 所以你可以简单地完全放弃存储库并直接使用你传递给它的集合:
var geodata = applicationContext.collection('geodata');
/** Lists of all geodata.
*
* This function simply returns the list of all Geodatum.
*/
controller.get('/', function (req, res) {
var parameters = req.parameters;
var limit = parameters['limit'];
var result = geodata.all().limit(10);
if (limit != "undefined") {
result = result.slice(0, limit);
}
res.json(_.map(result, function (doc) {
return _.omit(doc, ['_id', '_rev']);
}));
});
您不是第一个对存储库和集合之间的区别感到困惑的人,这就是存储库和模型将在即将发布的 3.0 版本中消失的原因(但您仍然可以在旧版 2.8 兼容服务中使用它们如果需要的话)。