لماذا تستخدم طريقة findOneAndUpdate
findAndModify
تحت الغطاء بدلاً من findOneAndUpdate ؟
أحتاج إلى تمرير إعدادات الإسقاط ولكنها لا تعمل لأن findAndModifiy
لا يأخذ مثل هذه المعلمات ، وبالتالي فإنه يعيد المستند بأكمله.
على سبيل المثال:
Product
.findOneAndUpdate({
_id: productId,
}, {
$push: {colors: data},
}, {
projection: {
name: 1, 'colors.$': 1,
},
returnNewDocument: true,
})
لأن النمس findOneAndUpdate()
يسبق فترة طويلة وجود findOneAndUpdate()
في برنامج التشغيل الأساسي ، و findOneAndUpdate()
للسائق هو مجرد غلاف رقيق حول findAndModify
أي حال. أيضًا ، يحتوي برنامج التشغيل findOneAndUpdate()
على العديد من الدلالات الغريبة ، خاصة فيما يتعلق بخيار new
والفرق بين new
و returnNewDocument
، والتي تعتبر مزعجة للنمس.
لا تعمل التوقعات مشكلة إلى حد ما. حاول استخدام "الحقول" بدلاً من "الإسقاط" ، لأن هذا هو الاسم الذي تستخدمه الوظيفة الأساسية findAndModify
شكرا للتوضيح. نعم ، لقد لاحظت وجود بعض الاختلافات الغريبة في التسمية ، على سبيل المثال fields
مقابل projection
و new
مقابل returnNewDocument
.
نعم ، هناك القليل من الالتباس لأن كل واجهة برمجة تطبيقات تريد أن تكون ندفة ثلجية خاصة بها :) الآن بعد أن أضاف برنامج التشغيل mongodb وظيفة findOneAndUpdate()
لها مراوغات خاصة بها ، لست متأكدًا بعد من كيفية المتابعة على mongoose's fineOneAndUpdate ( )
التعليق الأكثر فائدة
نعم ، هناك القليل من الالتباس لأن كل واجهة برمجة تطبيقات تريد أن تكون ندفة ثلجية خاصة بها :) الآن بعد أن أضاف برنامج التشغيل mongodb وظيفة
findOneAndUpdate()
لها مراوغات خاصة بها ، لست متأكدًا بعد من كيفية المتابعة على mongoose's fineOneAndUpdate ( )