Get started
데이터 읽기 및 쓰기
10 분
이 가이드는 당신에게 데이터 객체를 생성, 읽기, 업데이트 및 삭제하는 방법 을 back4app에서 parse sdk를 사용하여 가르쳐 줄 것입니다 back4app의 데이터 저장은 parse object 클래스 주위에서 이루어지며, 이는 json 호환 데이터의 키 값 쌍을 저장할 수 있게 해주어 데이터 관리의 유연성과 단순성을 제공합니다 목표 back4app에서 parse sdk를 사용하여 데이터 조작(crud)을 수행하는 방법을 이해합니다 다양한 플랫폼에서 parse sdk를 설정하고 사용하는 방법을 배웁니다 전제 조건 back4app의 앱 back4app에서 생성된 앱이 필요합니다 새 앱 생성 가이드 https //www back4app com/docs/get started/new parse app parse sdk 설치 parse sdk 설치 가이드 https //www back4app com/docs/get started/parse sdk 1 parse 객체 생성 back4app에 데이터를 저장하려면 특정 클래스와 연결된 parseobject 를 생성해야 합니다 예를 들어, 축구 관련 애플리케이션에서는 선수에 대한 데이터를 저장하기 위해 soccerplayers 클래스를 생성할 수 있습니다 async function savenewplayer() { const soccerplayers = new parse object("soccerplayers"); soccerplayers set("playername", "a wed"); soccerplayers set("yearofbirth", 1997); soccerplayers set("emailcontact", "a wed\@email io"); soccerplayers set("attributes", \["fast", "good conditioning"]); try { const result = await soccerplayers save(); console log('new object created with objectid ' + result id); } catch (error) { console error('error ' + error message); } } flutter parseobject soccerplayers = parseobject('soccerplayers') set('playername', 'a wed') set('yearofbirth', 1997) set('emailcontact', 'a wed\@email io') set('attributes', \['fast', 'good conditioning']); parseresponse response = await soccerplayers save(); if (response success) { print('new object created with objectid ${response result objectid}'); } else { print('error ${response error message}'); } android parseobject soccerplayers = new parseobject("soccerplayers"); soccerplayers put("playername", "a wed"); soccerplayers put("yearofbirth", 1997); soccerplayers put("emailcontact", "a wed\@email io"); soccerplayers put("attributes", arrays aslist("fast", "good conditioning")); soccerplayers saveinbackground(e > { if (e == null) { log d("parse", "new object created with objectid " + soccerplayers getobjectid()); } else { log e("parseerror", e getmessage()); } }); ios let soccerplayer = parseobject(classname "soccerplayers") soccerplayer\["playername"] = "a wed" soccerplayer\["yearofbirth"] = 1997 soccerplayer\["emailcontact"] = "a wed\@email io" soccerplayer\["attributes"] = \["fast", "good conditioning"] soccerplayer save { result in switch result { case success(let savedplayer) print("new object created with objectid \\(savedplayer objectid!)") case failure(let error) print("error \\(error localizeddescription)") } } php $soccerplayers = new parseobject("soccerplayers"); $soccerplayers >set("playername", "a wed"); $soccerplayers >set("yearofbirth", 1997); $soccerplayers >set("emailcontact", "a wed\@email io"); $soccerplayers >setarray("attributes", \["fast", "good conditioning"]); try { $soccerplayers >save(); echo 'new object created with objectid ' $soccerplayers >getobjectid(); } catch (parseexception $ex) { echo 'error ' $ex >getmessage(); } net parseobject soccerplayers = new parseobject("soccerplayers"); soccerplayers\["playername"] = "a wed"; soccerplayers\["yearofbirth"] = 1997; soccerplayers\["emailcontact"] = "a wed\@email io"; soccerplayers\["attributes"] = new list\<string> { "fast", "good conditioning" }; await soccerplayers saveasync(); console writeline("new object created with objectid " + soccerplayers objectid); rest api curl x post \\ h "x parse application id application id" \\ h "x parse rest api key rest api key" \\ h "content type application/json" \\ d '{ "playername" "a wed", "yearofbirth" 1997, "emailcontact" "a wed\@email io", "attributes" \["fast", "good conditioning"] }' \\ https //parseapi back4app com/classes/soccerplayers 이 코드를 실행한 후, back4app 대시보드의 database 섹션에서 새 객체를 확인할 수 있습니다 soccerplayers 클래스를 수동으로 생성할 필요는 없으며, 객체가 처음 저장될 때 자동으로 생성됩니다 2 파스 객체 읽기 to retrieve saved data, you can use a parsequery for instance, to fetch the player created above by its objectid js async function retrieveplayer() { const query = new parse query("soccerplayers"); try { const player = await query get("hmctr9rd3s"); // replace with the actual objectid console log("player name " + player get("playername")); console log("year of birth " + player get("yearofbirth")); console log("email contact " + player get("emailcontact")); } catch (error) { console error("error retrieving object " + error message); } } flutter parseresponse response = await parseobject("soccerplayers") getobject("hmctr9rd3s"); // replace with the actual objectid if (response success) { parseobject player = response result; print("player name ${player get\<string>('playername')}"); print("year of birth ${player get\<int>('yearofbirth')}"); print("email contact ${player get\<string>('emailcontact')}"); } else { print("error retrieving object ${response error message}"); } android parsequery\<parseobject> query = parsequery getquery("soccerplayers"); query getinbackground("hmctr9rd3s", (player, e) > { // replace with the actual objectid if (e == null) { log d("parse", "player name " + player getstring("playername")); log d("parse", "year of birth " + player getint("yearofbirth")); log d("parse", "email contact " + player getstring("emailcontact")); } else { log e("parseerror", "error retrieving object " + e getmessage()); } }); ios let query = parsequery(classname "soccerplayers") query get(objectid "hmctr9rd3s") { result in // replace with the actual objectid switch result { case success(let player) print("player name \\(player\["playername"] ?? "no name")") print("year of birth \\(player\["yearofbirth"] ?? "no birth year")") print("email contact \\(player\["emailcontact"] ?? "no email")") case failure(let error) print("error retrieving object \\(error localizeddescription)") } } php $query = new parsequery("soccerplayers"); try { $player = $query >get("hmctr9rd3s"); // replace with the actual objectid echo "player name " $player >get("playername") "\n"; echo "year of birth " $player >get("yearofbirth") "\n"; echo "email contact " $player >get("emailcontact") "\n"; } catch (parseexception $ex) { echo 'error retrieving object ' $ex >getmessage(); } net var query = parseobject getquery("soccerplayers"); var player = await query getasync("hmctr9rd3s"); // replace with the actual objectid console writeline("player name " + player get\<string>("playername")); console writeline("year of birth " + player get\<int>("yearofbirth")); console writeline("email contact " + player get\<string>("emailcontact")); rest api curl x get \\ h "x parse application id application id" \\ h "x parse rest api key rest api key" \\ https //parseapi back4app com/classes/soccerplayers/hmctr9rd3s # replace with the actual objectid 또한 objectid , 다른 매개변수(예 yearofbirth , playername )로도 쿼리할 수 있어 데이터 검색의 유연성이 더욱 향상됩니다 3 파스 객체 업데이트 객체를 업데이트하려면 먼저 객체를 검색하고, 원하는 속성에 대한 새 값을 설정한 다음 save() 메서드를 호출합니다 async function updateplayer() { const query = new parse query("soccerplayers"); try { const player = await query get("hmctr9rd3s"); // replace with the actual objectid player set("yearofbirth", 1998); await player save(); console log("object updated successfully!"); } catch (error) { console error("error updating object " + error message); } } flutter parseobject player = parseobject("soccerplayers") objectid = "hmctr9rd3s"; // replace with the actual objectid player set("yearofbirth", 1998); parseresponse response = await player save(); if (response success) { print("object updated successfully!"); } else { print("error updating object ${response error message}"); } android parsequery\<parseobject> query = parsequery getquery("soccerplayers"); query getinbackground("hmctr9rd3s", (player, e) > { // replace with the actual objectid if (e == null) { player put("yearofbirth", 1998); player saveinbackground(e1 > { if (e1 == null) { log d("parse", "object updated successfully!"); } else { log e("parseerror", "error updating object " + e1 getmessage()); } }); } else { log e("parseerror", "error retrieving object " + e getmessage()); } }); ios let query = parsequery(classname "soccerplayers") query get(objectid "hmctr9rd3s") { result in // replace with the actual objectid switch result { case success(var player) player\["yearofbirth"] = 1998 player save { saveresult in switch saveresult { case success print("object updated successfully!") case failure(let error) print("error updating object \\(error localizeddescription)") } } case failure(let error) print("error retrieving object \\(error localizeddescription)") } }$query = new parsequery("soccerplayers"); try { $player = $query >get("hmctr9rd3s"); // replace with the actual objectid $player >set("yearofbirth", 1998); $player >save(); echo "object updated successfully!"; } catch (parseexception $ex) { echo 'error updating object ' $ex >getmessage(); } net var query = parseobject getquery("soccerplayers"); var player = await query getasync("hmctr9rd3s"); // replace with the actual objectid player\["yearofbirth"] = 1998; await player saveasync(); console writeline("object updated successfully!"); rest api curl x put \\ h "x parse application id application id" \\ h "x parse rest api key rest api key" \\ h "content type application/json" \\ d '{"yearofbirth" 1998}' \\ https //parseapi back4app com/classes/soccerplayers/hmctr9rd3s # replace with the actual objectid 4 파스 객체 삭제 객체를 삭제하려면 objectid 로 검색하고 destroy() 메서드를 사용하세요 async function deleteplayer() { const query = new parse query("soccerplayers"); try { const player = await query get("hmctr9rd3s"); // replace with the actual objectid await player destroy(); console log("object deleted successfully!"); } catch (error) { console error("error deleting object " + error message); } } flutter parseobject player = parseobject("soccerplayers") objectid = "hmctr9rd3s"; // replace with the actual objectid parseresponse response = await player delete(); if (response success) { print("object deleted successfully!"); } else { print("error deleting object ${response error message}"); } android parsequery\<parseobject> query = parsequery getquery("soccerplayers"); query getinbackground("hmctr9rd3s", (player, e) > { // replace with the actual objectid if (e == null) { player deleteinbackground(e1 > { if (e1 == null) { log d("parse", "object deleted successfully!"); } else { log e("parseerror", "error deleting object " + e1 getmessage()); } }); } else { log e("parseerror", "error retrieving object " + e getmessage()); } }); ios let query = parsequery(classname "soccerplayers") query get(objectid "hmctr9rd3s") { result in // replace with the actual objectid switch result { case success(let player) player delete { deleteresult in switch deleteresult { case success print("object deleted successfully!") case failure(let error) print("error deleting object \\(error localizeddescription)") } } case failure(let error) print("error retrieving object \\(error localizeddescription)") } } php $query = new parsequery("soccerplayers"); try { $player = $query >get("hmctr9rd3s"); // replace with the actual objectid $player >destroy(); echo "object deleted successfully!"; } catch (parseexception $ex) { echo 'error deleting object ' $ex >getmessage(); } net var query = parseobject getquery("soccerplayers"); var player = await query getasync("hmctr9rd3s"); // replace with the actual objectid await player deleteasync(); console writeline("object deleted successfully!"); rest api curl x delete \\ h "x parse application id application id" \\ h "x parse rest api key rest api key" \\ https //parseapi back4app com/classes/soccerplayers/hmctr9rd3s # replace with the actual objectid 다시 말해, 객체를 objectid objectid 로 검색할 필요는 없습니다 parse는 parseobjects parseobjects 에서 정보를 검색하기 위한 다양한 검색 옵션을 제공합니다 각 기술에 대한 공식 parse 문서에서 더 많은 정보를 확인할 수 있습니다 모범 사례 및 추가 팁 명명 규칙 클래스를 위해 classnameslikethis를 사용하고, 키를 위해 keynameslikethis를 사용하여 코드를 정리하고 읽기 쉽게 유지하세요 일반 오류 확인 parse sdk에 연결하는 데 문제가 발생하면 sdk 설치 및 구성 을 확인하세요 자동 필드 각 parse 객체는 자동으로 createdat , updatedat , 및 objectid 필드를 포함합니다 다음 단계 back4app에서 첫 번째 데이터를 저장하고 읽은 후, 아래 가이드를 사용하여 데이터 저장소를 계속 탐색하는 것을 권장합니다 지원되는 데이터 유형을 저장하는 방법, 관계형 데이터를 저장하고 쿼리하는 방법, 지리적 포인트를 사용하는 방법, 최적화된 데이터 모델을 만드는 방법을 찾을 수 있습니다 리액트 네이티브 플러터 안드로이드 ios 자바스크립트 그래프ql 리액트js 결론 이 가이드는 back4app에서 데이터 작업을 위한 확고한 출발점을 제공하며, parse sdk를 사용하여 플랫폼 간 데이터 저장 및 조작을 쉽게 만듭니다 질문이 있으시면 언제든지 back4app 지원 에 문의해 주세요!