2017-01-06 6 views
2

私はユーザー情報を格納しているデータベースを作成していました。以前は、システムはうまくいきました。マングースのnpmアップデートを実行した後、システムは失敗しましたが、なぜその理由はわかりません。次のエラーメッセージが表示されます。mongoose findByIdが正しいIDで動作しない

CastError: Cast to ObjectId failed for value "xxxxxxxxxxxxxxx" at path "_id" for model "User" 

次に、データベースが正常に接続されているかどうかをテストするための簡単なテストコードを書きます。例:

User.findOne({firstName: "David"}, function(err, user){console.log(user.lastName)}); 

上記は完全に機能しました。

Iは、直接データベースから対応するIDを発見などの変数を作成する:

var testId = "abcde" 

、次のコードを試みた:

User.findById(testId, function(err, user){console.log(user.firstName)}); 

そしてそれだけ出力エラーメッセージを。

mongoose.Types.ObjectId.isValid('abcde')(abcdeは単なる例です)、trueを返しました。したがって、私は本当にそれがうまくいかなかったというアイデアはありません...それはマングースバグですか?

ご回答いただきありがとうございました。ありがとうございました!

+0

はあなたのスキーマの詳細 –

+0

'VARのuserSchema =新しいスキーマ({ 電子メールを表示することができます[{タイプ:Schema.Types.ObjectId 、ref: 'File'}] }); ' – matthewhang

答えて

1

私はただ問題を解決しました。

前述のとおり、findById関数はマングースを更新しても機能しませんでした。私は数日間コードに苦労していました。私が今朝起きたとき、突然ノードnode.jをアップグレードすることを考えました。

これはうまくいきました。

最新バージョンにv4.x.xからのNode.jsをアップグレードした後、すべてが正常に働いていた:)

これは私が互換性の問題の一つの単独のモジュールとケアをアップグレードしてはならない教訓を教えてくれました。文字列、 のfirstName::文字列、 lastNameの:文字列、 パスワード:文字列、 ファイル:

関連する問題