강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của joycehong
joycehong

câu hỏi đã được viết

Tạo Dapp bất động sản trên blockchain Ethereum - Phần cơ bản

Tóm tắt

강의 다 마치고 추가적으로 function을 추가하려고 하는데요

Viết

·

353

0

제가 하고자 하는 것은 컨트랙트 배포한 사람과 현재 메타마스크 연결 계정이 같으면

'admin mode'라고 웹에 표시하고 싶고 아니면 'buyer mode'라고 웹에 표시하고 싶은데

if 문 안의 조건이 !==를 하든 ===을 하든 똑같은 결과를 내보내네요. 그리고 else문을 쓰면 역시 항상 else문이 실행이 되구요..! 아그리고 address는 작은따옴표로 쓸 시 비교가 불가능 한건가요?

listenToEvents: function() {

App.contracts.RealEstate.deployed().then(function(instance){

instance.LogBuyRealEstate({},{fromBlock:0, toBlock:'latest'}).watch(function(error,event){

if(!error){

$('#events').append(''+event.args._buyer+'계정에서'+event.args._id+'번 매물을 매입했습니다.'+'');

        console.log(event.args._buyer);

if(event.args._buyer=="0x461a9dc0c12a9110b07440a148ec5f9e8523c909"){

$('.buyer-or-admin').text("Admin mode");

}else{

$('.buyer-or-admin).text("Buyer mode");

}

}else{

console.error(error);

}

App.loadRealEstates();

})

})

dappEthereumblockchain

Câu trả lời 5

0

SEJONG IT EDU님의 프로필 이미지
SEJONG IT EDU
Người chia sẻ kiến thức

괜찮아요 ^_^

0

joycehong님의 프로필 이미지
joycehong
Người đặt câu hỏi

감사합니당!!! 내일 한번 해볼게여!!! (귀찮으실텐데 죄송해여?)

0

SEJONG IT EDU님의 프로필 이미지
SEJONG IT EDU
Người chia sẻ kiến thức

그렇죠. 이 방식은 json파일에서 매물을 불러오는거라 이 방식을 고수하면서 매물을 추가하고싶으면

1. json파일에 새로운 매물을 추가하고 기존의 real-estate.json 파일과 바꾸거나 

2. 매물 추가 버튼을 만들고 real-estate.json 파일에 새로운 오브젝트를 추가하게끔 만드셔야겠네요. (예: https://stackoverflow.com/questions/28661281/add-object-to-json-file-node-js)

간단한 방식의 예제라 json파일을 썼지만 관계형 데이타베이스나(MySql) 몽고디비같은 곳에 매물 데이터를 저장하고 불러와도 되겠죠 :)

자료 저장하는것까지 탈중앙화식으로 하고싶다면 블록체인 기반 파일 저장 프로토콜인 IPFS를 사용할 수도 있어요. 다음 강좌에서 다룰 내용입니다.

0

joycehong님의 프로필 이미지
joycehong
Người đặt câu hỏi

되네요!!!!! 다른 function 추가해보고 싶은데

혹시 만약에 admin 모드에서 매물을 추가 하고 싶으면 어떻게 해야하나요? 예를 들어 admin에서만 보이는 매물추가 버튼이 필요할 거구 real-estate.json 파일에 매물 데이터가 추가되어야 겠죠??? ㅠ 어떻게 해야할까요

0

SEJONG IT EDU님의 프로필 이미지
SEJONG IT EDU
Người chia sẻ kiến thức

좋은 질문, 좋은 시도입니다. 제가 제대로 이해했다면 일단 사이트를 실행했을 때 현재 메타마스크에 선택된 계정이 배포된 주소로 쓰인 계정이면 admin mode 라고 하고싶으신거 같은데요. 참고로 event.args._buyer는 매물을 매입한 사람의 계정을 불러오는거라 만약 배포된 계정으로 매입하지 않았으면 if문 안으로 절대 들어가지 않겠죠.
web3의 getAccounts를 쓰는게 더 나을 것 같아요. 팁을 드리자면 listenToEvents 함수에서 처리하는 것 보다 아예 다른 함수를 만드시고 예:

checkAdminOrBuyer: function() {
    web3.eth.getAccounts(function(error, accounts) {
         if (error) {
             console.log(error);
         }
         var account = accounts[0];  // 현재 메타마스크에 선택된 계정
         if (account.toUpperCase() === '0x461a9dc0c12a9110b07440a148ec5f9e8523c909'.toUpperCase()) {
             $('.buyer-or-admin').text("Admin mode");
        } else {
            $('.buyer-or-admin').text("Buyer mode");
        }
    });
},

그리고 이 함수를 initContract 함수에서 불러오는걸로 해보세요~!

Hình ảnh hồ sơ của joycehong
joycehong

câu hỏi đã được viết

Đặt câu hỏi