2017-01-09 72 views
2

我的應用程序本地工作,但在生產中我似乎無法使用貓鼬蒙戈獲取一個具體的事情。我已經試過:演員到的ObjectId失敗的價值「」在路徑「_id」爲模型「教練」

var Coach = mongoose.model('Coach', CoachSchema);

  • Coach.findOne({ _id: req.session.userId}, function (err, coach) {})
  • Coach.find({ _id:req.session.userId}, function (err, coach) {})
  • Coach.findById(req.session.userId).exec(function(err, coach)){})

我已經收到了同樣的錯誤: Cast to ObjectId failed for value "586bc06bd09d870012baa5b8" at path "_id" for model "Coach"

就像我說的,這既nodemonheroku local本地的作品,但我的Heroku生產服務器上它不工作。

我讀過一些關於這種類型拈錯誤:

,但沒有運氣呢。任何幫助都會很棒。先謝謝你。

+4

的可能的複製[投射到的ObjectId失敗值「586cc8b3ea780c071bbe2469」的路徑「\ _id」爲模式的「用戶」( HTTP://計算器。com/questions/41461562/cast-to-objectid-failed-for-value-586cc8b3ea780c071bbe2469-at-path-id-for-m) –

回答

1

我曾面臨同樣的問題有時會回來,爲mongoose版> 4.7.2

我解決它通過安裝mongoose版本4.7.2

npm install [email protected] 

也,你可以改變你的package.json,使它使用了貓鼬的這一確切版本。

"mongoose" : "4.7.2" 

此錯誤是因爲bson包造成的。這給出了錯誤

Hex is not a function on ObjectId creation

閱讀更多關於它在this鏈接。

mongoose從版本4.7.2更新爲4.7.3時,此錯誤開始。 當這個錯誤被解決,您可以更新到的mongoose新版本。您可以跟蹤bug herehere

所以,最後,你可以通過安裝貓鼬版本解決了這個錯誤4.7.2

+0

謝謝!有效!! – Sprintup

0

也許你必須嘗試像這樣的東西:

Coach.findOne({ _id: mongoose.Types.ObjectId(req.session.userId)}, function (err, coach) { 
    }); 

希望它能幫助。

+0

謝謝你的迴應。現在它說'十六進制不是一個函數'。 – Sprintup

相關問題