web3.eth.getTransaction(txHash) will returns transaction details like blockHash, transactionIndex, from, to, etc.
It will take some time to miner to mine block and add to blockchain. So its not instant.
If you want to know any storage value is added/modified in blockchain to outside world, then we need to raise en event in smart contract.
Using Web3JS(JSON-RPC/WS-RPC) you need to register and listen for an event. When your transaction get mined you will receive an event.
Event will store as a log, and its very cheap when compare to storage. No one can able to modify event data.
Below is the code for the same.
pragma solidity ^0.4.17;
//Contract for storing ticket info
contract TicketRes {
event on_success_booking(address userId, string bookingId, string emailId);
//Ticket info having two storage values i.e email and userID
struct BookingInfo{
string emailId;
address userId;
}
//Map for saving all the info, assuming all ticket has unique id as key. Value is ticket info
mapping(bookingId=>BookingInfo) internal info;
function Book() public {
}
//Method will save all basic info, and will raise event.
function onBookingCompleted(address id, string bookingId, string emailId) public {
info[bookingId] = BookingInfo(emailId,userId);
on_success_booking(id, bookingId, emailId);
}
//You can get info by using bookingid at any point of time.
function getBookingInfo(string bookingId) public constant returns(string, address){
return (info[bookingId].emailId, info[bookingId].userId);
}
}
Following is the javascript code:
// Contract deployed address.
var contractAddress = "0x06433f4fc50423f71329597f50fb0a42cfecb11f";
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
}
//Open build folder and you will find contact json file copy the appropriate JSON and paste it there.
var contractABI = web3.eth.contract(/** ABI Here **/);
//Connected contract to your local network
var contract = contractABI.at(contractAddress);
//Loading booking event function.
var booking_event = web3.sha3('on_success_booking(address,string,string)');
//Watching events, when onBookingCompleted() tran's mined then event get triggered. You can get all previous events also. for that need to apply filters.
booking_event.watch((error, result) => {
if(error){
console.log("error",error);
}
console.log("Result", result); //result.args holds values, result.args.id, result.args.bookingId and result.args.emailid
});
Hope this helps!
Get your Blockchain certification today to learn more about this technology.
Thanks.