我正在使用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));
});
答案 0 :(得分:0)
解决了Indexes和.lean()的问题。其中一个查询是基于多个字段和文本的查找。我做了一些索引,速度提高了很多(再加上使用.lean())。