0
Model.findOne()メソッドを使用する場合、戻り値をそのフィールドだけに制限する文字列を含めることができますが、findByIdメソッドでこれを実行しようとするとうまくいかないようです。findByIdを使用して指定されたフィールドを返します。 Mongoose MongoDB
以下の例は、人為的な例です。実際の_idを使用していますが、最初の例を使用すると機能しますが、findByIdメソッドを使用したいのは、私の心の後ろにある小さな声が、より速い(たぶん)ということです。
例:
let Joe = new PersonModel({
_id: ObjectId("12345")
name: 'Joe',
age: 30,
password: 'GreatPW'
}).save();
今ジョーを見つけ、そして唯一の彼の名前と年齢を返します。これは動作します!
PersonModel.findOne({_id: Joe._id}, 'name age')
.then(person => console.log(person))
ここでもfindById()を使用して同じことを行います。これは私のために働いていません。
PersonModel.findById(Joe._id, 'name age')
.then(person => console.log(person))
findByIdはfindOneを呼び出し、それはより速くすることができません。ソースは[こちら](http://mongoosejs.com/docs/api.html#model_Model.findById)です。投射はfindByIdでも有効です。 – MikaS
あなたは間違いなく、これは現在機能しています。それは昨晩のコードに影響する何か他のものだったに違いない。これを回答として追加すると、私はあなたに正しい回答があるとマークします。 – TJBlackman
うまくいきました。再現不可能な問題は本当に答えられるはずではないので、私のコメントは十分だと思います。とにかくありがとう。 – MikaS