Mongoose多连接与Hapijs相同的DB

时间:2017-11-29 13:01:32

标签: node.js mongoose hapijs

我正在使用Hapijsmongoose,问题是某些URLmongoose密切相关。 A, B, C是3种不同的模式。此查询可能需要一些时间,具体取决于array大小。问题是当mongoose正在处理此请求时,它无法处理另一个请求。例如,如果某些人正在进行导入,则其他任何人都无法登录系统。

我尝试了mongoose poolSize选项,但这不起作用。

任何ideas如何克服这个问题?

  buildArticle: function(articles, req, res) {
    let bulkUpdateOps = articles.map(function(article) {
      return A.findOneAndUpdate(
            query
        )
        .then(function() {
          return B.findOneAndUpdate(
            query
          );
        })
        .then(function(resultado) {
            some stuff
        })
        .then(function(resultado) {
          return {
            updateOne: {
              filter: {
               query
              },
              update: {
                data
              },
              upsert: true
            }
          };
        })
        .catch(function(err) {
          console.log(err);
          return res(Boom.badImplementation("Error: ", err));
        });
    });

    Promise.all(bulkUpdateOps)
      .then(function(ops) {
        return C.bulkWrite(ops, {
          ordered: true,
          w: 1
        });
      })
      .then(_ => {
        return res("Imported");
      })
      .catch(function(err) {
        console.log(err);
        return res(Boom.badImplementation("Error: ", err));
      });

1 个答案:

答案 0 :(得分:0)

解决了Indexes和.lean()的问题。其中一个查询是基于多个字段和文本的查找。我做了一些索引,速度提高了很多(再加上使用.lean())。