I am pretty new to this so please bare with my ignorance! I need to write some data to a contract on a private chain using a simple function that I defined. Here is the Solidity function:
function createPatient(bytes32 firstName, bytes32 lastName, uint height, uint weight, bytes32 dob){
PatientObjects newPatient = new PatientObjects(firstName, lastName, height, weight, dob);
LogCreatedPatient(newPatient);
patients.push(newPatient);
}
It all works fine ifI use the Remix compiler online. I am now trying to access this function using web3. But I have no idea how I could do it. Here is what I have tried and the error message i got:
var createPatientForMedicalStaff = function(patient, MSaddress, provider, callback){
console.log("in the eth api the value of patient is: " + JSON.stringify(patient));
console.log("the address: " + MSaddress);
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider(provider));
var getOrganisationDetailContract = web3.eth.contract(ethContracts.abiMedicalStaffObject).at(MSaddress);
getOrganisationDetailContract.createPatient(patient, function(error, result){
if (!error) {
console.log("it worked!: " + result);
} else {
console.log(error);
}
});
};
exports.createPatientForMedicalStaff = createPatientForMedicalStaff;
The object patient contains a json with all the inputs that the solidity function needs. and MSaddress is the address of the Solidity contract. I am sure that the address is correct since when i paste it in the remix compiler I can indeed access the said contract. However when I try to run this with web3 I get this error:
Error: invalid address 2017-03-16T19:59:13.347330+00:00 app[web.1]: at inputAddressFormatter (/app/node_modules/web3/lib/web3/formatters.js:271:11) 2017-03-16T19:59:13.347331+00:00 app[web.1]: at inputTransactionFormatter (/app/node_modules/web3/lib/web3/formatters.js:97:20) 2017-03-16T19:59:13.347332+00:00 app[web.1]: at Array.map (native) 2017-03-16T19:59:13.347332+00:00 app[web.1]: at /app/node_modules/web3/lib/web3/method.js:89:28 2017-03-16T19:59:13.347333+00:00 app[web.1]: at Method.formatInput (/app/node_modules/web3/lib/web3/method.js:88:32) 2017-03-16T19:59:13.347334+00:00 app[web.1]: at Method.toPayload (/app/node_modules/web3/lib/web3/method.js:114:23) 2017-03-16T19:59:13.347334+00:00 app[web.1]: at Eth.send [as sendTransaction] (/app/node_modules/web3/lib/web3/method.js:139:30) 2017-03-16T19:59:13.347336+00:00 app[web.1]: at SolidityFunction.execute (/app/node_modules/web3/lib/web3/function.js:234:37) 2017-03-16T19:59:13.347335+00:00 app[web.1]: at SolidityFunction.sendTransaction (/app/node_modules/web3/lib/web3/function.js:151:15) 2017-03-16T19:59:13.347336+00:00 app[web.1]: at Object.createPatientForMedicalStaff (/app/ethAPI.js:117:35) 2017-03-16T19:59:13.347337+00:00 app[web.1]: at /app/app.js:174:12 2017-03-16T19:59:13.347339+00:00 app[web.1]: at module.exports (/app/node_modules/express-stormpath/lib/middleware/authentication-required.js:25:12) 2017-03-16T19:59:13.347337+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5) 2017-03-16T19:59:13.347338+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/route.js:131:13) 2017-03-16T19:59:13.347339+00:00 app[web.1]: at /app/node_modules/express-stormpath/lib/middleware/get-user.js:154:11 2017-03-16T19:59:13.347340+00:00 app[web.1]: at /app/node_modules/express-stormpath/lib/helpers/expand-account.js:145:5