【问题标题】:Limiting Number of Collection Records in Loopback Model限制环回模型中的收集记录数
【发布时间】: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


    【解决方案1】:

    我认为您正在寻找的实际上是remote hook,然后是PersistedModel's count() method

    module.exports = function(Log) {
    
      Log.afterRemote('create', function accessCount(ctx, instance, next) {
        console.log('AFTER CREATE of a new Log');
    
        Log.count(function(err, count) {
            if (err) {
                // let this one go maybe? if not, call: next(err);
            }
    
            console.log('There are now ' + count + ' Log records.');
    
            // do whatever you need to here
    
            next();
        });
      });
    
    };
    

    【讨论】:

    • 谢谢,正在调查这个问题,目前无法启动这个钩子
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2021-07-10
    相关资源
    最近更新 更多