create account

blockchain에서 글 수정 기능의 구현. by dabble

View this thread on: hive.blogpeakd.comecency.com
· @dabble ·
$0.46
blockchain에서 글 수정 기능의 구현.
![](https://cdn.steemitimages.com/DQmW4SKLyMPpeyedbY1hjyhr2cpEkXomECcVTnqFx2VJ7XS/image.png)

데블은 구현하면서 생긴 하루하루의 개발일지를 글로 남기려고 합니다. 다소 일기와 생각의 흐름처럼 써내려가는 부분에는 양해를 해주시면 감사하겠습니다.


***

중간에 mongodb가 있고 일정 기간 별로 mongodb의 내용을 blockchain에 sync함. 단 sync의 기간은 글의 길이에 따라서 달라짐.

기존이 글을 쓰는 function은..

~~~
  app.post("/write", function(req, res) { 
	  
	/* some server side logic */

	  var user = req.body.user;
	  var data = req.body.data;
	  console.log("write event", user, data);
	  //save this data to mongoDB//
	  saveData(user, data);
	  res.send("done");
  });
~~~

Express로 /write요청을 받아서, parameter를 parsing하여 user,와 user가 쓴 데이터를 db에 저장함. 사실 session id를 사용하기 때문에 user를 받을 필요는 없지만, 이는 session이라는 개념을 알기전에 개발한 api여서 일단은 user를 parameter로 받음.

이렇게 쓰여진 글에 수정 기능은 다음과 같이 제공할 수 있을 것 같음.

/edit 라는 post method를 제공하고, parameter로 글의 id값과 새로 수정한 data를 받음.
결과는 "success" or "fail" 로 return.

기존의 write는 아래와 같이 세부 함수를 부르고, saveData(user, data) 실패할 일이 없다는 가정으로 항상 "done"을 return함. done을 보내는 것이 기존의 naming규정에 맞지 않아서 success, fail로 앞으로는 통일을 하기로 함. By frontend engineer의 가이드.


기존의 saveData의 코드를 확인함.
~~~
//custom functions
function saveData(account, data){
	MongoClient.connect(url, function(err, db) {
   		var dbo = db.db("heroku_dg3d93pq");
		var tod = Date.now();

   		var myobj = { account : account, data : data, date : tod, voting : 0, payout : 0, steem : false };
   		dbo.collection("board").insertOne(myobj, function(err, res){
    			if (err) throw err;
    			console.log("1 document inserted");
    			db.close();   
   		});
  	}); 
}
~~~

제가 만든 것이지만 이름부터 마음에 들지 않음.....
saveData라니..

다행히도 insertOne을 하는 구조이고, DB에는 특별히 다른 값에 대해서 key설정이 되어 있지 않음.
글의 id를 받아서 updateOne을 하면 깔끔하게 기존 글을 수정할수 있음. 또한 글의 payout여부에 따라서 fail을 return할수도 있음.

따라서 기존의 saveData처럼 구현하는 것이 아니라 callback형식으로 구현해야 함.

우선 post method를 만듦.

~~~
  app.post("/edit", function(req, res) { 
	/* some server side logic */
	  
	  var postid = req.body.postid;
	  var data = req.body.data;
	  console.log("edit event", postid, data);
	  //query Mongo DB
	  editData(postid, data,(result) => {res.send(result)});
  });

~~~

딱히 마음에는 안들지만 관련함수도 saveData와 비슷하게 editData로 맞춤.
saveData와이 차이점은 editData뒷부분에 callback함수로 res.send가 추가됨.

이제 editData를 coding할 차례!.
~~~
function editData(postid, data, cb){
	//ToDo : payout data condition check
	MongoClient.connect(url, function(err, db) {
		var dbo = db.db("heroku_dg3d93pq");
		var myobj = { $set : {data : data}};
		var findquery = {_id : OBjectId(postid)};
		dbo.collection("board").updateOne(findquery, myobj, function(err, res){
			if (err) throw err;
			console.log("1 document modified");
			cb("success");
			db.close()
		});
	});
}
~~~

우선 간단하게 MVP로 구현하고 payout기간에 대한 것은 나중에 처리.

이제 unittest하고, 잠시후에 frontend engineer와 연동시험만 하면 끝!
👍  , , , , , , ,
properties (23)
authordabble
permlinkblockchain
categorykr-dev
json_metadata{"tags":["kr-dev","kr","eos","jjangjjangman"],"image":["https://cdn.steemitimages.com/DQmW4SKLyMPpeyedbY1hjyhr2cpEkXomECcVTnqFx2VJ7XS/image.png"],"app":"steemit/0.1","format":"markdown"}
created2018-07-25 08:55:18
last_update2018-07-25 08:55:18
depth0
children10
last_payout2018-08-01 08:55:18
cashout_time1969-12-31 23:59:59
total_payout_value0.420 HBD
curator_payout_value0.043 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,738
author_reputation262,388,560,746
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id65,909,335
net_rshares225,522,244,195
author_curate_reward""
vote details (8)
@chenish ·
$0.19
이번생에 가능할지 모르겠지만, 아들낳으면 꼭 개발자시킬랍니다.
👍  
properties (23)
authorchenish
permlinkre-dabble-blockchain-20180727t075535547z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-07-27 07:55:30
last_update2018-07-27 07:55:30
depth1
children0
last_payout2018-08-03 07:55:30
cashout_time1969-12-31 23:59:59
total_payout_value0.178 HBD
curator_payout_value0.013 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length34
author_reputation28,849,557,175
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id66,130,214
net_rshares104,585,143,058
author_curate_reward""
vote details (1)
@dabble ·
$0.17
session id를 check해서 다른 사용자가 수정을 못하게 막아야 함.
그런데 애초에 수정 버튼이 안보이게 해야 할텐데..
👍  
properties (23)
authordabble
permlinkre-dabble-blockchain-20180725t101042114z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-07-25 10:10:42
last_update2018-07-25 10:10:42
depth1
children0
last_payout2018-08-01 10:10:42
cashout_time1969-12-31 23:59:59
total_payout_value0.147 HBD
curator_payout_value0.026 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length71
author_reputation262,388,560,746
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id65,915,051
net_rshares84,946,414,034
author_curate_reward""
vote details (1)
@steamsteem · (edited)
$0.18
@dabble 님 dabble 코인 ? 개발 일기

eos 토큰 ? 코인 ? 인듯하고,
구체적으로는 아직 모르겠지만, 잼 있을 것 같군요.

dabble 코인이나 블록체인은 무엇하는 블록체인 인가요?
👍  , ,
👎  ,
properties (23)
authorsteamsteem
permlinkre-dabble-blockchain-20180814t003453999z
categorykr-dev
json_metadata{"tags":["kr-dev"],"users":["dabble"],"app":"steemit/0.1"}
created2018-08-14 00:34:54
last_update2018-08-14 00:35:24
depth1
children5
last_payout2018-08-21 00:34:54
cashout_time1969-12-31 23:59:59
total_payout_value0.155 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length111
author_reputation-2,924,616,767,862
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,111,001
net_rshares134,569,240,864
author_curate_reward""
vote details (5)
@dabble ·
$0.12
EOS 메인넷 기반 토큰 입니다. Social service입니다.!
👍  
properties (23)
authordabble
permlinkre-steamsteem-re-dabble-blockchain-20180814t004411390z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-08-14 00:44:12
last_update2018-08-14 00:44:12
depth2
children4
last_payout2018-08-21 00:44:12
cashout_time1969-12-31 23:59:59
total_payout_value0.088 HBD
curator_payout_value0.029 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation262,388,560,746
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,111,567
net_rshares85,880,885,314
author_curate_reward""
vote details (1)
@steamsteem ·
좋은 정보 감사합니다.

블록체인이 조만간 도처에서 만개할 것 같은 느낌이 드네요.

성공적인 사업 되시기 기대합니다.

저도 관심을 가지고 찾아가 볼께요.
👍  ,
👎  ,
properties (23)
authorsteamsteem
permlinkre-dabble-re-steamsteem-re-dabble-blockchain-20180815t215223393z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-08-15 21:52:24
last_update2018-08-15 21:52:24
depth3
children0
last_payout2018-08-22 21:52:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length87
author_reputation-2,924,616,767,862
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,318,288
net_rshares-10,073,766,925
author_curate_reward""
vote details (4)
@steamsteem ·
좋은 정보 감사합니다.

블록체인이 조만간 도처에서 만개할 것 같은 느낌이 드네요.

성공적인 사업 되시기 기대합니다.

저도 관심을 가지고 찾아가 볼께요.
👎  
properties (23)
authorsteamsteem
permlinkre-dabble-re-steamsteem-re-dabble-blockchain-20180817t214117016z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-08-17 21:41:15
last_update2018-08-17 21:41:15
depth3
children0
last_payout2018-08-24 21:41:15
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length87
author_reputation-2,924,616,767,862
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,539,514
net_rshares-11,175,084,718
author_curate_reward""
vote details (1)
@steamsteem ·
좋은 정보 감사합니다.

블록체인이 조만간 도처에서 만개할 것 같은 느낌이 드네요.

성공적인 사업 되시기 기대합니다.

저도 관심을 가지고 찾아가 볼께요.
👎  
properties (23)
authorsteamsteem
permlinkre-dabble-re-steamsteem-re-dabble-blockchain-20180818t221044408z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-08-18 22:10:42
last_update2018-08-18 22:10:42
depth3
children0
last_payout2018-08-25 22:10:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length87
author_reputation-2,924,616,767,862
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,640,594
net_rshares-12,640,669,599
author_curate_reward""
vote details (1)
@steamsteem ·
$0.21
좋은 정보 감사합니다.

블록체인이 조만간 도처에서 만개할 것 같은 느낌이 드네요.

성공적인 사업 되시기 기대합니다.

저도 관심을 가지고 찾아가 볼께요.
👍  
👎  ,
properties (23)
authorsteamsteem
permlinkre-dabble-re-steamsteem-re-dabble-blockchain-20180818t233343973z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-08-18 23:33:42
last_update2018-08-18 23:33:42
depth3
children0
last_payout2018-08-25 23:33:42
cashout_time1969-12-31 23:59:59
total_payout_value0.156 HBD
curator_payout_value0.051 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length87
author_reputation-2,924,616,767,862
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id68,645,675
net_rshares158,452,138,240
author_curate_reward""
vote details (3)
@wonsama ·
테디님 아이디 새로 따신거에요 ?
properties (22)
authorwonsama
permlinkre-dabble-blockchain-20180726t055746907z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-07-26 05:57:45
last_update2018-07-26 05:57:45
depth1
children1
last_payout2018-08-02 05:57:45
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length18
author_reputation157,263,627,541,921
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id66,008,664
net_rshares0
@dabble ·
넵. 빙고!. 그들을 설득할 방법이 없어서 조용조용 숨어서 지내고 있습니다.
👍  ,
properties (23)
authordabble
permlinkre-wonsama-re-dabble-blockchain-20180726t060319833z
categorykr-dev
json_metadata{"tags":["kr-dev"],"app":"steemit/0.1"}
created2018-07-26 06:03:21
last_update2018-07-26 06:03:21
depth2
children0
last_payout2018-08-02 06:03:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length42
author_reputation262,388,560,746
root_title"blockchain에서 글 수정 기능의 구현."
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id66,009,037
net_rshares408,954,594
author_curate_reward""
vote details (2)