Advanced Guides
วิธีอัปเกรด Parse Server เป็นเวอร์ชัน 3.1 สำหรับนักพัฒนา
20 นาที
เพิ่มพลังให้กับแอปของคุณด้วย parse server 3 1 บทนำ ชุมชน parse เพิ่งปล่อยเวอร์ชัน https //docs parseplatform org/parse server/guide/ การอัปเดตนี้ได้ทำความสะอาดไวยากรณ์ cloud code มันเหมาะสมมากขึ้นในการใช้โครงสร้าง es6 async และ await นอกจากนี้ยังมีการลดความแปลกประหลาดบางอย่างที่เกี่ยวข้องกับการใช้ parse เช่น ฟังก์ชัน cloud จะคืนค่า promise แทนที่จะใช้ ข้อผิดพลาด ข้อผิดพลาด หรือ ความสำเร็จ ความสำเร็จ ในวัตถุ response คุณสามารถอัปเกรดแอปของคุณบน back4app ได้อย่างง่ายดายจากแดชบอร์ดของคุณ คู่มือนี้จะแสดงวิธีการอัปเกรดโค้ดของคุณเพื่อใช้ประโยชน์จากฟีเจอร์ใหม่ของ 3 1 ในการติดตามคู่มือนี้คุณยินดีที่จะดูที่ https //github com/back4app/parse server break changes ที่จัดเตรียมไว้ นี่คือบทเรียนจากแขกที่เขียนโดย https //github com/considine , นักพัฒนาหัวหน้าที่ https //koptional com/ เป้าหมาย เพื่ออัปเดต back4app parse server ของคุณเป็น 3 1 และย้าย cloud code ของคุณให้เหมาะสม ข้อกำหนดเบื้องต้น ในการทำบทเรียนนี้ให้เสร็จสิ้น คุณต้อง ° มีแอป back4app ที่มีอยู่ซึ่งใช้ parse server 2 x ° ติดตาม https //www back4app com/docs/get started/new parse app เพื่อเรียนรู้วิธีการสร้างแอปที่ back4app สรุปการเปลี่ยนแปลง การเปลี่ยนแปลงที่สำคัญที่สุดมีดังนี้ 1\ cloud code ทำงานร่วมกับ parse sdk 2 x ก่อนหน้านี้ cloud code ทำงานร่วมกับ parse sdk 1 x ด้วย parse server 3 1 มันทำงานกับ parse sdk 2 x ดูที่ https //github com/parse community/parse sdk js/releases เพื่อทำความเข้าใจให้ดีขึ้นว่าสิ่งนี้เกี่ยวข้องกับอะไร การปรับรุ่นหลักนี้ส่วนใหญ่เกี่ยวข้องกับการแก้ไขข้อบกพร่อง นอกจากนี้ยังเพิ่ม https //parseplatform org/parse sdk js/api/2 1 0/parse query html#containedby และ https //parseplatform org/parse sdk js/api/2 1 0/parse query html#includeall วิธีการค้นหา รวมถึงความสามารถในการดึงวัตถุพร้อมกับ includes 2 การอัปเดตแบบรวม ตั้งแต่ parse 2 7 1 คุณสามารถใช้ https //parseplatform org/parse sdk js/api/2 1 0/parse query html#aggregate วิธีการในคำค้น นี่ช่วยให้คุณใช้ประโยชน์จากฐานข้อมูลที่อยู่เบื้องหลังได้มากขึ้น ตอนนี้ ไวยากรณ์สำหรับ https //parseplatform org/parse sdk js/api/2 1 0/parse query html#aggregate ใน parse query parse query ได้รับการอัปเดตแล้ว คุณสามารถดำเนินการค้นหาด้วยสองขั้นตอน match match และ group group ขั้นตอน 1 // ตรงกับผู้ใช้ที่ชื่อ foo และจัดกลุ่มตาม objectid ของพวกเขา 2 const pipeline = \[{ group { objectid {} } }, { match { name 'foo' } }]; 3 4 var query = new parse query("person"); 5 query aggregate(pipeline) ก่อนหน้านี้ คุณไม่จำเป็นต้องใช้คีย์ pipeline ในอ็อบเจ็กต์ pipeline เนื่องจาก api ที่อยู่เบื้องหลัง ตอนนี้คุณต้องรวมคีย์ pipeline อย่างชัดเจน ค่าในนั้นควรเป็นอาร์เรย์ของหนึ่งหรือสองขั้นตอน ซึ่งมี กลุ่ม กลุ่ม และ จับคู่ จับคู่ ดูที่ https //docs parseplatform org/js/guide/#aggregate สำหรับตัวอย่างที่เฉพาะเจาะจงมากขึ้น 3 การปรับแต่งที่อยู่เบื้องหลัง มีการปรับแต่งที่อยู่เบื้องหลังบางอย่างที่ได้ทำขึ้น ตัวอย่างเช่น https //parseplatform org/parse sdk js/api/2 1 0/parse livequery html จะดึงข้อมูล class level permissions (clps) พร้อมกับข้อมูลเพื่อป้องกันการเข้าถึงฐานข้อมูลซ้ำ 4\ อีเมลรีเซ็ต parse เมื่อขออีเมลรีเซ็ตรหัสผ่าน เซิร์ฟเวอร์จะส่งกลับความสำเร็จแม้ว่าจะไม่มีอีเมลนั้นถูกบันทึก นอกจากนี้ โทเค็นรีเซ็ตรหัสผ่านจะหมดอายุเมื่ออีเมลของผู้ใช้ถูกรีเซ็ต 5\ การอัปเดตการกระตุ้นคลาวด์ ด้วยการเปิดตัวนี้ คุณสามารถแชร์ข้อมูลระหว่าง https //docs parseplatform org/cloudcode/guide/#beforesave triggers และ https //docs parseplatform org/cloudcode/guide/#aftersave triggers การกระตุ้นในวัตถุเดียวกัน ตัวอย่างเช่น 1 parse cloud beforesave('comment', async request => { 2 request context = { 3 foo 'bar' 4 }; 5 }); 6 7 parse cloud aftersave('comment', async request => { 8 console log(request context foo); //bar 9 }); คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงใน parse server ได้ใน parse 3 1 changelog อย่างเป็นทางการโดยคลิก https //github com/parse community/parse server/blob/alpha/changelog md 6\ การปรับปรุง livequery ลูกค้า parse livequery ช่วยให้คุณสมัครสมาชิกการค้นหาและรับการอัปเดตจากเซิร์ฟเวอร์เมื่อมีการเข้ามา การค้นหาแบบดั้งเดิมจะถูกดำเนินการเพียงครั้งเดียวโดยลูกค้า ดังนั้นจึงมีประโยชน์มากสำหรับกรณีเช่นการส่งข้อความ เป็นต้น ด้วย back4app คุณยังสามารถ https //www back4app com/docs/platform/parse server live query example ด้วยการเปิดตัว 3 x ชุมชน parse ได้ปรับปรุงระบบสำหรับ livequery https //docs parseplatform org/js/guide/#security for other objects คุณสามารถส่งโทเค็นเซสชันไปยังวิธี subscribe ของการค้นหาสด และ parse server จะจัดการเฉพาะการส่งคืนผลลัพธ์ที่ผู้ใช้คนนี้เข้าถึงได้เท่านั้น ตัวอย่างเช่น ผู้ใช้อาจมีสิทธิ์อ่าน/เขียนใน ‘ข้อความ’ บางรายการ แต่ไม่ใช่ทั้งหมด 1 let query = new parse query('message'); 2 // you can get session token with 3 // parse user current() getsessiontoken() when logged in 4 let subscription = client subscribe(query, sessiontoken); โค้ดข้างต้นจะสมัครสมาชิกโดยอัตโนมัติสำหรับข้อความทั้งหมดที่ผู้ใช้เข้าถึงได้ ทำให้คุณไม่ต้องรับผิดชอบในการค้นหาข้อความเฉพาะ ส่วนหลักของการเปลี่ยนแปลงเกี่ยวข้องกับวิธีการจัดการ cloud code สำหรับสิ่งนี้ โปรดดูคู่มือการย้ายข้อมูลด้านล่าง 1 การปรับแนวทางพื้นฐานทางเทคนิค เราจะเริ่มด้วยตัวอย่างโครงการคลาวด์โดยใช้เวอร์ชัน 2 x ด้วยวิธีนี้เราสามารถนำทางผ่านการเปลี่ยนแปลงของไวยากรณ์ที่เหมาะสม คุณสามารถดู https //github com/back4app/parse server break changes สำหรับโครงการตัวอย่างนี้ หากคุณคุ้นเคยกับ async และ await คุณสามารถข้ามส่วนนี้ได้ วิวัฒนาการของโค้ดแบบอะซิงโครนัสใน javascript ดูเหมือนจะเป็นแบบนี้ https //developer mozilla org/en us/docs/glossary/callback function https //developer mozilla org/en us/docs/web/javascript/reference/global objects/promise https //developer mozilla org/en us/docs/web/javascript/reference/statements/async function แอปพลิเคชัน javascript สมัยใหม่ใด ๆ จะใช้ทั้งสามอย่างนี้ ฟังก์ชัน callback เกี่ยวข้องกับการส่งฟังก์ชันเป็นอาร์กิวเมนต์ไปยังฟังก์ชันอื่น ฟังก์ชันที่สองนี้สามารถเรียกใช้ฟังก์ชันแรกในบางจุด 1 // callbacks 2 // executes callback function after waiting 100 milliseconds 3 settimeout(function() { 4 alert('my callback function'); 5 }, 100); คอลแบ็กเป็นสิ่งจำเป็น แต่สามารถยุ่งเหยิงเมื่อเกี่ยวข้องกับการเชื่อมโยงหลาย ๆ ตัว โดยเฉพาะอย่างยิ่ง การซ้อนหลายชั้นอาจอ่านได้ยาก และการจัดการข้อผิดพลาดก็พิสูจน์ได้ยาก ดังนั้นใน es2015 จึงมีการแนะนำ promise 1 // promises 2 // executes several promises in a row with no significant nesting 3 const mypromise = new promise(function(resolve, reject) { 4 settimeout(function() { 5 if (math random() < 0 2) reject(new error('random failure!')); 6 resolve('finished'); 7 }, 100); 8 }); 9 10 // executes this promise 4 times and catches errors involved 11 mypromise 12 then(() => mypromise) 13 then(() => mypromise) 14 then(() => mypromise) 15 then(() => mypromise) 16 catch(e => console log(e)); พรอมิสช่วยปรับปรุงความสามารถในการอ่านของการเขียนโปรแกรมแบบอะซิงโครนัส พวกเขายังทำให้ท่อส่งข้อมูลชัดเจนยิ่งขึ้น แต่ก้าวที่ใหญ่กว่านั้นเกิดขึ้นใน https //www ecma international org/ecma 262/8 0/#sec async function definitions ด้วยโครงสร้าง async / await โค้ดของคุณสามารถรอผลลัพธ์ของพรอมิสโดยไม่ต้องพึ่งพาบล็อก then / catch (ซึ่งอาจอ่านได้ยากเช่นกัน) 1 // using the definition of mypromise from the above code 2 async function foo() { 3 try { 4 let result = await mypromise; 5 result = await mypromise; 6 result = await mypromise; 7 } catch (e) { 8 console log(e); 9 } 10 } อาจจะสำหรับตัวอย่างที่ง่ายมากนี้ อาจดูไม่สง่างามมากกว่าพรอมิสธรรมดา แต่การรอผลลัพธ์ของฟังก์ชันอะซิงโครนัสมักจะเป็นสิ่งที่เราต้องการทำ ดังนั้นมันจึงช่วยเพิ่มความสามารถในการอ่านของโค้ดของเราอย่างแท้จริง การสนับสนุนสำหรับ async/await ตามที่กล่าวไว้ข้างต้น async/await ถูกนำมาใช้ใน https //www ecma international org/ecma 262/8 0 (es8) สำหรับโค้ดเซิร์ฟเวอร์ การจัดการเวอร์ชันแทบจะไม่ใช่ปัญหา เนื่องจากคุณสามารถอัปเดตเป็น https //node green/#es2017 สบายใจได้ว่า สภาพแวดล้อมของ back4app สนับสนุนเวอร์ชันที่เสถียรล่าสุด สำหรับโค้ดเบราว์เซอร์ ตัวแปลงโค้ดเช่น https //babeljs io/ จะผลิต es2016 ที่เข้ากันได้กับโค้ดที่ใช้ async / await และทำงานในเบราว์เซอร์สมัยใหม่ 2 คิดเกี่ยวกับโค้ดของคุณในแบบที่แตกต่างออกไป การเปลี่ยนแปลงหลักเกี่ยวกับ cloud code เกี่ยวข้องกับสิ่งที่นักพัฒนาทำเมื่อเปรียบเทียบกับสิ่งที่ไลบรารีทำ ก่อนหน้านี้คุณจะต้องจัดการกับการตอบสนองอย่างชัดเจน เนื่องจาก cloud code ส่วนใหญ่จะทำงานแบบอะซิงโครนัส ทำการสอบถามและเขียนฐานข้อมูล จึงมีเหตุผลมากขึ้นที่จะส่งคืน promise เพื่อลดโค้ดที่ไม่จำเป็น สัญชาตญาณเบื้องหลังฟังก์ชัน cloud คือการตั้งค่าและการกำหนดค่าที่เกี่ยวข้องกับการเขียนโค้ดฝั่งเซิร์ฟเวอร์มีน้อยมาก การปล่อยตัวนี้เป็นตัวแทนของแนวคิดนั้น; โปรดจำสิ่งนี้ไว้เมื่อคุณกำลังปรับโครงสร้างและสร้างฟังก์ชันใหม่ เพื่อแสดงให้เห็นว่าฟังก์ชัน cloud code ทำงานอย่างไรใน parse server 3 1 เราได้เขียนโค้ดตัวอย่าง cloud code ที่ใช้งานได้ใหม่จากเวอร์ชันของ parse server ก่อนการย้ายข้อมูล คุณสามารถค้นหาโค้ดนี้ได้โดยคลิก https //github com/back4app/parse server break changes/tree/step 1 ฟังก์ชัน cloud code เดียวกันนี้เขียนใน parse 3 1 ดังที่แสดงด้านล่าง 1 // cloud code before migration 2 // full code found in link above 3 const post = 'post'; 4 parse cloud define('posts\ get', function(request, response) { 5 // needs a post id 6 return new parse query(post) 7 get(request params id, { usemasterkey true }) 8 then(post => { 9 response success(post); 10 }) 11 catch(e => { 12 response error({ message e message }); 13 }); 14 }); 3 การเพิ่มเครื่องหมาย async ทั้งหมด ฟังก์ชันใด ๆ ที่ใช้ await จะต้องประกาศด้วยตัวปรับแต่ง async การปรับโครงสร้างง่าย ๆ นี้จะเชื่อมต่อ async กับ cloud functions ทั้งหมด นอกจากนี้ยังจะแทนที่พวกเขาด้วย https //developer mozilla org/en us/docs/web/javascript/reference/functions/arrow functions เนื่องจากมันกระชับมากกว่าในกรณีนี้ (และเป็นสิ่งที่คู่มือ parse ที่อัปเดตใช้) 1 // snippet of step 2 code refactoring see full code 2 // here in the link at the top of this step 3 const post = 'post'; 4 const comment = 'comment'; 5 6 parse cloud define('posts\ get', async (request) => { 7 // needs a post id 8 return new parse query(post) 9 get(request params id, { usemasterkey true }); 10 } โค้ดของคุณจะดูเหมือน https //github com/back4app/parse server break changes/tree/step 2 หลังจากการปรับโครงสร้างนี้ ไม่มีอะไรบ้าไปจนถึงตอนนี้ ในขั้นตอนถัดไป เราจะได้รับความคุ้มค่าสำหรับการเปลี่ยนแปลงนี้ 4 การลบการอ้างอิงถึงการตอบสนอง ใช้ await โค้ดของคุณจะดูเหมือน https //github com/back4app/parse server break changes/tree/step 3 หลังจากการปรับโครงสร้างนี้ ขั้นตอนนี้ค่อนข้างยุ่งยาก เราต้อง ลบการอ้างอิงทั้งหมดไปยังตัวแปร ‘response’ และคืนค่าพรอมิสแทน ในกรณีที่มีฟังก์ชัน query/save หลายฟังก์ชัน ให้รอการตอบกลับ ตรวจสอบวิธีการสร้างความคิดเห็นเพื่อดูว่าทำอย่างไร 1 // snippet of step 3 code refactoring see full code 2 // here in the link at the top of this step 3 parse cloud define('comment\ create', async request => { 4 // post should have text and should have a user and a post id 5 if (!request user) { 6 throw new error('unauthenticated!'); 7 } 8 9 if (!request params text) { 10 throw new error('a comment needs text!'); 11 } 12 if (!request params post id) { 13 throw new error('a comment needs a post!'); 14 } 15 16 // get the post 17 18 const post = await new parse query(post) get(request params post id, { 19 usemasterkey true 20 }); 21 return new parse object(comment, { 22 text request params text, 23 user request user, 24 post post 25 }) save(null, { usemasterkey true }); 26 }); โปรดทราบว่า ตอนนี้มีข้อผิดพลาด javascript ถูกโยนแทนที่จะเรียกใช้ response error parse จะจัดการการแปลงนี้เป็นการตอบกลับให้เรา การลบ ‘โพสต์’ หรือ ‘ความคิดเห็น’ เกี่ยวข้องกับการดึงวัตถุก่อนแล้วจึงทำลายมัน โดยการใช้ ‘await’ วิธีการทำลายสามารถเข้าถึงวัตถุที่บันทึกไว้ภายนอกบล็อก นี่คือการปรับโครงสร้างทั้งหมดที่จำเป็นสำหรับการย้ายข้อมูล กล่าวคือ หากคุณทำจนถึงขั้นตอนนี้ ขอแสดงความยินดี! โค้ดของคุณจะทำงานบน back4app parse 3 1! 5 เทคนิคขั้นสูง (ไม่บังคับ) การเปลี่ยนแปลงต่อไปนี้เป็นทางเลือก แต่สามารถทำให้โค้ดของคุณสั้นลงอย่างมาก ฉันพบว่ามันช่วยลดโค้ดที่ซ้ำซ้อน คุณอาจสังเกตเห็นการตรวจสอบด้วยตนเองมากมายสำหรับพารามิเตอร์หรือผู้ใช้ที่ได้รับการตรวจสอบสิทธิ์ สิ่งเหล่านี้ช่วยให้แน่ใจว่าพฤติกรรมแปลก ๆ จะไม่เกิดขึ้น ตัวอย่างเช่น เราได้ตัดสินใจว่าอ็อบเจ็กต์ ‘โพสต์’ ของเราต้องการข้อความ ดังนั้นหากไม่มีพารามิเตอร์ ‘ข้อความ’ ถูกส่ง อ็อบเจ็กต์จะถูกบันทึกโดยไม่มีมัน หนึ่งในวิธีการป้องกันสิ่งนี้คือการตรวจสอบว่ามีการส่งข้อความหรือไม่ แต่การตรวจสอบด้วยตนเองอาจใช้เวลานานและไม่สวยงาม ในส่วนนี้เราจะใช้ประโยชน์จาก https //developer mozilla org/en us/docs/web/javascript/reference/operators/destructuring assignment เพื่อทำการตรวจสอบเหล่านี้โดยอัตโนมัติ คุณควรดูเอกสารข้างต้นหากคุณไม่รู้ว่าการทำลายโครงสร้างคืออะไร แต่โดยสั้น ๆ มันช่วยให้คุณเปลี่ยนคุณสมบัติของอ็อบเจ็กต์ให้เป็นตัวแปรด้วยไวยากรณ์ที่กระชับมาก 1 // this 2 var obj = { 3 hi true, 4 bye false 5 }; 6 var hi = obj hi; 7 var bye = obj bye; 8 9 // is equivalent to this 10 var obj = { 11 hi true, 12 bye false 13 }; 14 var { hi, bye } = obj; 15 16 console log(hi); 17 // true 18 console log(bye); 19 // false การทำลายโครงสร้างมีความกระชับน้อยกว่าการกำหนดค่าด้วยตนเอง มันยังช่วยให้คุณประกาศตัวแปรพารามิเตอร์ได้อย่างรวดเร็วซึ่งเป็นสิ่งที่ดี 1 parse cloud define('posts\ get', async ({ params { id } }) => { 2 // id is declared 3 }); เมื่อรวมกับการบันทึก es2015 สำหรับ https //developer mozilla org/en us/docs/web/javascript/reference/operators/object initializer#new notations in ecmascript 2015 เราสามารถเพิ่มประสิทธิภาพการตรวจสอบพารามิเตอร์ของเราได้ เราสามารถทำเช่นนี้ 1 // iterates through object's keys makes sure, for each key, the value is set 2 const assertparams = parameter obj => { 3 for (var key of object keys(parameter obj)) { 4 if (typeof parameter obj\[key] === 'undefined') 5 throw new error(`missing parameter ${key}`); 6 } 7 }; 8 9 var obj = { 10 hi true, 11 bye false 12 }; 13 var { hi, undef, bye } = obj; // undef will be undefined 14 var check 1 = { hi, bye }; 15 var check 2 = { hi, undef }; 16 17 // check = { hi true, no undefined } 18 assertparams(check 1); // passes 19 assertparams(check 2); // throws error ดังนั้นสำหรับโค้ด parse ของเรา เราสามารถทำได้ดังนี้ 1 // snippet of advanced code refactoring see full code 2 // here in the link at the top of this step 3 parse cloud define('posts\ delete', async ({ user, params { id } }) => { 4 // makes sure user is authenticated, and id parameter is passed 5 assertparams({ user, id }); 6 const post = await new parse query(post) get(id, { 7 usemasterkey true 8 }); 9 return post destroy({ usemasterkey true }); 10 }); ถ้านี่ดูน่ากลัว อย่ากังวลไปเลย ตัว https //github com/back4app/parse server break changes/tree/step advanced ตัวอย่างอาจช่วยได้ โดยสรุป ‘assertparams’ เป็นฟังก์ชันยูทิลิตี้สำหรับโยนข้อผิดพลาดหากค่าที่กำหนดเป็น undefined เราสามารถตรวจสอบพารามิเตอร์ในครั้งเดียวโดยการรวมการทำลายวัตถุและการเริ่มต้นวัตถุ es2015 นี่จะช่วยลดการตรวจสอบด้วยมือแปดหรือเก้าครั้งซึ่งเริ่มจะดูไม่สวยงามหลังจากผ่านไปสักพัก 6 การอัปเกรดบน back4app เมื่อคุณได้ย้ายโค้ดของคุณแล้ว คุณต้องทำอีกสองสิ่งเพื่อให้มันทำงานบน back4app อัปเกรดเวอร์ชันเซิร์ฟเวอร์ back4app ของคุณ อัปโหลดโค้ดคลาวด์ใหม่ของคุณ ฉันได้กล่าวถึงขั้นตอนแรกไปแล้วอย่างสั้น ๆ สิ่งที่คุณต้องทำคือเข้าสู่ระบบ back4app และไปที่แดชบอร์ดของแอปของคุณ จากนั้นเลือก “การตั้งค่าเซิร์ฟเวอร์” ทางด้านซ้าย ตามด้วยปุ่ม “การตั้งค่า” บนการ์ด “จัดการ parse server” คุณสามารถเลือกปุ่มวิทยุ parse server 3 1 1 และกด “บันทึก” สุดท้ายแต่ไม่ท้ายสุด คุณสามารถอัปโหลดโค้ดของคุณผ่าน https //blog back4app com/2017/01/20/cli parse server/ , หรือแดชบอร์ดของคุณโดยใช้การอัปโหลดแบบแมนนวล ดู https //www back4app com/docs/android/parse cloud code หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนนี้ หมายเหตุเกี่ยวกับการเปิดตัวเวอร์ชันใหม่ หากโค้ดของคุณซับซ้อน อาจเป็นความคิดที่ดีที่จะทำการทดสอบบางอย่างก่อนที่จะทำสองขั้นตอนนี้ back4app มีคู่มือเกี่ยวกับวิธีการทำสิ่งนี้ https //www back4app com/docs/advanced guides/parse cloud code testing และ https //www back4app com/docs/cloud code functions/unit tests สุดท้ายนี้ สิ่งสำคัญที่ต้องทราบคือการเปลี่ยนแปลงเหล่านี้เป็น breaking การใช้โค้ดที่เราเขียนบน parse server 2 x จะล้มเหลว และการใช้โค้ด 2 x บนเซิร์ฟเวอร์ 3 1 ก็จะล้มเหลวเช่นกัน ดังนั้นคุณต้องมั่นใจว่าได้อัปเกรดเวอร์ชัน parse ของ back4app ทันทีเมื่อคุณอัปโหลด cloud code ที่อัปเกรดแล้ว หากคุณมีผู้ใช้จำนวนมากและกังวลเกี่ยวกับการอัปโหลดโค้ดและการอัปเกรดเวอร์ชันที่อาจไม่ตรงกัน คุณสามารถทำสิ่งที่คล้ายกันนี้ได้ 1 const serverversion = 2 parse coremanager get('version') === 'js1 11 1' ? 'old' 'new'; 3 4 if (serverversion === 'new') { 5 parse cloud define('posts\ get', async ({ params { id } }) => { 6 assertparams({ id }); 7 // needs a post id 8 return new parse query(post) get(id, { 9 usemasterkey true 10 }); 11 }); 12 } else if (serverversion === 'old') { 13 // old definition here 14 } โค้ดนี้จะคำนวณเวอร์ชันโดยอัตโนมัติและกำหนด cloud functions ตามนั้น หลังจากอัปโหลดสิ่งนี้แล้ว คุณจะเปลี่ยนเป็น 3 1 และจากนั้นคุณสามารถอัปโหลดโค้ดใหม่โดยลบส่วนเก่าออก การรวมการตรวจสอบในตอนแรกจะช่วยให้แน่ใจว่าไม่มีจุดใดที่โค้ดของคุณจะล้มเหลว เนื่องจากคุณสามารถอัปเกรดและอัปโหลดภายในไม่กี่วินาที โดยปกติแล้วจึงไม่จำเป็น บทสรุป ในคู่มือนี้ เราได้แสดงให้เห็นอย่างง่ายดายว่าจะแปลง cloud code ของคุณไปยังเวอร์ชัน parse 3 1 ได้อย่างไร อย่าลืมอัปเกรดเวอร์ชัน back4app ของคุณเป็น 3 1 หลังจากที่คุณทำการเปลี่ยนแปลงเหล่านี้ นอกจากนี้ สิ่งสำคัญคือ คู่มือนี้ได้แสดงให้เห็นถึงไวยากรณ์ที่ปรับปรุงแล้วที่ parse 3 1 ใช้ การปรับโครงสร้างของเราลดขนาดโค้ดจาก 160 บรรทัดเหลือ 90 บรรทัดและทำให้มันอ่านง่ายขึ้นมาก สำหรับแอปพลิเคชันจริง สิ่งนี้จะให้ผลตอบแทนที่ดี