Mongoose多连接与Hapijs相同的DB
我正在与Hapijs
和mongoose
合作,问题是一些URL
真的与mongoose
密集。 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));
});
回答如下:
解决了Indexes和.lean()的问题。其中一个查询是基于多个字段和文本的查找。我做了一些索引,速度提高了很多(加上使用.lean())。