![](/img/trans.png)
[英]Cursor.next() never resolves using Mongoose (4.13.19)
[英]Mongoose - Query exec() never resolves in model method
為了重構一些將在不同地方使用的代碼,我將這種已經在控制器中工作的方法轉移到了Mongoose模型中。
在模型中, trackQuery.exec()
永遠不會到達回調,也不會解析。 如果我沒有解決的exec()
或者無需等待exec()
它工作正常。 用Mongoose Query
正確填充trackQuery
。
我沒有得到的關於貓鼬模型的微妙之處是什么?
ArtistSchema.methods.insertRelatedTracks = function (items) {
const newTracksToSave = items.map((item) => {
return new Promise((resolve, reject) => {
const TrackModel = mongoose.model('Track'),
trackQuery = TrackModel.findOne({ externalID: item.id })
;
return trackQuery.exec((err, track) => {
if (err) {
return reject(err);
}
if (!track) {
let track = new TrackModel({
externalID: item.id,
provider: item.provider,
title: item.title,
artist: item.artist,
artistID: this._id,
artistExternalID: this.externalID,
thumbnail: item.thumbnail,
publishedAt: item.publishedAt,
count: 0
});
return track.save((err, res) => {
if (err) {
return reject(err);
}
return resolve(res);
});
}
return resolve(track);
});
});
});
return Promise.all(newTracksToSave).then(() => {
return this;
}).catch((err) => {
console.error(err);
return this;
});
}
對我來說,解決方案是手動導入TrackModel
而不是依靠通常的運行時mongoose.model('Track')
方法。 我沒有說明為什么mongoose.model
在這種情況下不起作用。 任何提示都歡迎。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.