簡體   English   中英

貓鼬-查詢exec()永遠不會在模型方法中解析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM