【问题标题】:Sails collection add/remove is very slowSails 集合添加/删除非常慢
【发布时间】:2014-10-10 22:39:43
【问题描述】:

我正在使用 Sails 框架中的一个小纸牌游戏后端 - 只是为了好玩,并了解现在的框架。

我在模型上使用集合时遇到了一个问题 - 不知道我是否用错了 - 但它真的很慢 - 不明白为什么。

简单示例:

// models / Deck.js
module.exports = {

  attributes: {

    game : {
      model : 'game'
    },
    cards : {
      collection : 'card'
    },
  },

  newDeck : function(game_id, callback) {
    // 52 Cards
    Card.find({}).exec(function(err, results) {
        Deck.create({game : game.id}).exec(function(err, deck) {

          while(cards.length) {
            deck.cards.add(cards.pop());
          }
          deck.save(function(err, deck) {
            if(err) callback(err);
            callback(null, deck);
          });

        });
    }
}

当我调用 newDeck 函数时,大约需要 5 到 10 秒。完成 - 它全部在 .save() 函数中,问题是,如果我将其注释掉,它会在 1 秒内完成。

另一个例子我只删除了一条记录,这也需要大约 5-6 秒。

deck.cards.remove(card.id)
    deck.save(function(err, deck){
})

我是不是做错了什么?? 我尝试在另一个示例中创建 52 条记录,这需要不到 1 秒。 - 无法弄清楚我做错了什么。

【问题讨论】:

  • 我尝试清除数据库,现在保存功能只需要大约 1 秒。但是在填充了一些牌组之后——大约 20 组左右——它又变慢了!所以我的测试告诉我,更多的牌组会减慢整个系统的速度——这是有线的吗?
  • 您好,您使用的是哪个数据库提供商?如果您使用的是“sails-disk”,则可能值得检查使用适当的数据库(如 mysql)是否更好,不确定您有多少数据。有关详细信息,请参阅 config/connections.js。
  • 我只是在开发 - 所以我使用 Sails 附带的默认值 - 但不明白为什么添加一些关系会如此缓慢 - 这没有意义 - 我认为该表中有大约 500 行,我需要大约 5 秒。插入 52 个新行..

标签: sails.js


【解决方案1】:

文档说,如果您在模型上有任何关联,它们将在保存时填充。

为防止这种情况,请使用:

.save({ populate: false }, function() {})

http://sailsjs.org/documentation/reference/waterline-orm/records/save

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 2021-11-14
    • 2012-04-23
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多