【发布时间】:2015-06-01 06:14:53
【问题描述】:
我需要做的是将特定集合(在我的例子中是日志)限制为 100 条记录。也就是说,当有 100 条日志并添加新的时,最旧的将被销毁。
我知道我可以在 mongo 中通过设置 capped/size/max 值来做到这一点,但我还希望有一些代码用于以后更高级的查询过滤器。
我希望将此作为操作挂钩 (http://docs.strongloop.com/display/public/LB/Operation+hooks#Operationhooks-access) 引入,但我不知道如何查询相关模型并在超过阈值时删除最后一条记录。现在我只是设置了一个访问钩子,它只是检查是否没有达到阈值,如果有,它将删除最后一条记录。这最终将在“before create”钩子上完成,但这样做更容易测试。
这是一些伪代码(common/models/log.js):
module.exports = function (Log) {
Log.observe('access', function logQuery (ctx, next) {
var threshold = 10;
var logs = Log.find({});
if (logs.length > threshold) {
logs[logs.length].delete // delete last record
}
next();
});
};
这显然是行不通的,只是希望它能为我正在尝试做的事情提供线索。
谢谢。
【问题讨论】:
标签: node.js api loopbackjs strongloop