2017-09-23 16 views
0

私は変な例外に苦しんでいて、1時間後にはまだ混乱しています。ObjectIdへのキャストがMongooseの値のエラーに失敗しましたfindOne

CastError: Cast to ObjectId failed for value "[email protected]" at path "_id" for model "Account"

電子メールアドレスでアカウントを取得しようとしています。ここに私のクエリは

export async function getPendingRecipients(user_id, email_address) { 
    const account = await Account 
     .find({email: email_address}) 
     .exec(); 

    return true; 
} 

である。これは私のスキーマオブジェクト

const userGmailSchema = new Schema({ 
    id: { 
     type: String, 
     unique: true 
    }, 
    displayName: String, 
    image: Object, 
    accessToken: String, 
    user: { 
     type: Schema.Types.ObjectId, 
     ref: 'User' 
    }, 
    refreshToken: { 
     type: String, 
     default: null 
    }, 
    email: { 
     type: String, 
     unique: true 
    }, 
    emails: [ 
     { 
      type: Schema.Types.ObjectId, 
      ref: 'Emails' 
     } 
    ] 
}); 

答えて

0

である私はわからないんだけど、私はこの問題は、あなたがidフィールドを書いていると思います。 MongoDBは、「主キー」で

ObjectIdオブジェクトである_idフィールド、(実際には12バイトの値です)であり、マングースに、id_idの仮想ゲッターであり、容易idあり、前記エイリアスは_idです。

(異なる少しは_idの、その_id戻りObjectIdid戻りStringバージョンです。)

デフォルトでは、マングースは自動的に_idフィールドを管理するので、一般的に、我々は、スキーマ内のidについて何を書くべきではありません。

idがSQL DBのプライマリキーIDのようなものの場合は、それをmongooseスキーマから削除してください。それはだが、自分のアプリで何か他のものを意味している場合、オプションを追加しよう:

const userGmailSchema = new Schema({ 
    // your schemas here 
}, 
{ 
    { id: false } // disable the virtual getter 
}) 

か、名前を変更します。

http://mongoosejs.com/docs/guide.html#id

は、この情報がお役に立てば幸いです。

関連する問題