ตัวนับการเพิ่มฟังก์ชั่นคลาวด์โดยไม่ต้องอ่านเอกสาร

ฉันต้องการเพิ่มหรือลดตัวเลขในฟังก์ชันคลาวด์โดยไม่ต้องอ่านเอกสาร

ฉันมีเอกสารรายการ และเมื่อเอกสารอัปเดต ก็จะตรวจสอบปริมาณ หากปริมาณมากกว่าศูนย์ ให้เพิ่มจำนวนรายการในโปรไฟล์ร้านค้า สมมติว่าร้านค้ามีสินค้า 10 รายการ และช่องเอกสารรายการสินค้าได้รับการอัปเดตจาก 0 เป็น 1 สินค้าคงคลัง ฉันจะต้องเพิ่มจำนวนสินค้าในร้านค้าเป็น 11

ฉันจำได้ว่าอ่านบล็อก Firebase ว่ามีฟีเจอร์ใหม่ที่ช่วยให้ทำเช่นนี้ได้ แต่เราจะทำอย่างไรในฟังก์ชั่นคลาวด์?


person Mozes ong    schedule 01.04.2019    source แหล่งที่มา


คำตอบ (1)


คุณใช้ฟีเจอร์นี้ใน Cloud Functions ผ่าน Admin SDK นี่คือตัวอย่างตามโครงการที่ฉันกำลังทำอยู่

ขั้นแรกให้คุณนำเข้า Admin SDK:

var admin = require('firebase-admin');

จากนั้นใน Cloud Function ของคุณ คุณจะเพิ่มฟิลด์ดังนี้:

var firestore = admin.firestore();
var docRef = firestore.collection('your_collection').doc('your_document');
docRef.update({ itemCount: admin.firestore.FieldValue.increment(1) })

ซึ่งจะเพิ่มฟิลด์ itemCount ขึ้น 1

ดูเพิ่มเติมที่:

person Frank van Puffelen    schedule 01.04.2019
comment
const admin = need('firebase-admin'); docRef.update({ 'availableItemsCount' : admin.firestore().FieldValue.increation(1), }); ข้อผิดพลาด: TypeError: ไม่สามารถอ่านคุณสมบัติ 'เพิ่มขึ้น' ของไม่ได้กำหนดที่ Exports.setAvailableItemsCount.functions.firestore.document.onUpdate (/srv/index.js:206:74) ที่ ‹anonymous› ที่ process._tickDomainCallback (ภายใน/กระบวนการ/next_tick .js:229:7) - person Mozes ong; 01.04.2019
comment
อืม.... ฉันคิดว่าฟีเจอร์นี้เปิดตัวใน Admin SDK แล้ว ขอตรวจสอบดูก่อน... - person Frank van Puffelen; 01.04.2019
comment
มีให้ใช้งานอย่างแน่นอนใน firebase-admin 7.2.0 - @Mozesong คุณอาจต้องอัปเดตการอ้างอิงของคุณ - person oodavid; 01.04.2019
comment
ควรจะเป็น admin.firestore.FieldValue และไม่ใช่ admin.firestore().FieldValue ใช่ไหม - person Renaud Tarnec; 01.04.2019
comment
ขอบคุณ oodavid ฉันไม่สามารถทำมันได้ และขอบคุณเรโนด์ ฉันใช้สิ่งนี้ในเว็บแอป ดังนั้นอาจมีไวยากรณ์ Admin SDK ผิด แต่ FieldValue เป็นคลาสแบบคงที่ ดังนั้นควรต้องมีการรับอินสแตนซ์ Firestore - person Frank van Puffelen; 01.04.2019
comment
@Mozesong: ตามที่ Renaud ชี้ให้เห็น มันควรจะเป็น admin.firestore.FieldValue โดยไม่มีวงเล็บหลังจาก firestore - person Frank van Puffelen; 01.04.2019
comment
มันไม่ได้ผล docRef.update({ 'availableItemsCount' : admin.firestore.FieldValue.increation(1), }); ข้อผิดพลาด: TypeError: admin.firestore.FieldValue.increation ไม่ใช่ฟังก์ชันที่ Exports.setAvailableItemsCount.functions.firestore.document.onUpdate (/srv/index.js:201:74) ที่ ‹anonymous› ที่ process._tickDomainCallback (ภายใน/ กระบวนการ/next_tick.js:229:7) เวอร์ชัน: [email protected] - person Mozes ong; 02.04.2019
comment
ฉันเพิ่งทดสอบสิ่งนี้บนระบบของตัวเอง และหลังจากอัปเกรดเป็นเวอร์ชัน 7.2 ของ Admin SDK admin.firestore.FieldValue.increment(1) ก็แก้ไขได้โดยไม่มีปัญหา ฉันไม่แน่ใจว่าเหตุใดจึงไม่ได้ผลสำหรับคุณ - person Frank van Puffelen; 02.04.2019
comment
firestore.d.ts ของฉันไม่มีฟังก์ชัน increment() ฉันจะทำอย่างไร? - person Mozes ong; 03.04.2019
comment
@FrankvanPuffelen ฉันยังไม่สามารถเพิ่มขึ้นได้ - person Mozes ong; 04.04.2019
comment
ขออภัย @Mozesong เนื่องจากฉันไม่สามารถสร้างปัญหาซ้ำได้ จึงช่วยได้ไม่มาก คุณอาจต้องการดูว่าคุณสามารถรวม MCVE ในคำถามของคุณหรือไม่ ฉันเข้าใจว่ามันอาจจะยุ่งยาก แต่ ณ จุดนี้ เราติดอยู่กับงานในเครื่องหนึ่ง ไม่ใช่ในเครื่องอื่น ซึ่งทำให้ยากสำหรับฉันที่จะช่วยเหลือ - person Frank van Puffelen; 04.04.2019
comment
github.com/googleapis/nodejs-firestore/issues/ แก้ไขแล้ว ปัญหาของฉันบางส่วนและยังมีข้อผิดพลาดในการอัปเดตบางส่วนด้วย - person Mozes ong; 14.04.2019
comment
เอกสารจำเป็นต้องอัปเดตหรือไม่? firebase.google.com/docs/reference/admin/node/ - person wtk; 07.05.2019
comment
ใช่แล้ว ดูเหมือนว่าจะไม่ทันสมัยเลย ฉันเพิ่งแจ้งข้อผิดพลาดสำหรับ ขอบคุณสำหรับการแจ้ง! - person Frank van Puffelen; 07.05.2019
comment
@FrankvanPuffelen แต่เนื่องจากฟังก์ชันคลาวด์อาจทำงานมากกว่าหนึ่งครั้งในการเรียกใช้ครั้งเดียว จึงไม่ปลอดภัยที่จะใช้ FieldValue.increation ใน Cloud Functions ใช่ไหม - person dshukertjr; 22.09.2019
comment
หมายเหตุ: การอัปเดตจะล้มเหลวหากนำไปใช้กับเอกสารที่ไม่มีอยู่ - person Rifat; 30.03.2021