- Hello, We are getting this error on our cloud function 2022-02-17T19:49:15.886Z - Error generating response.
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at new NodeError (node:internal/errors:371:5) at ServerResponse.setHeader (node:_http_outgoing:576:11) at ServerResponse.header (/moralis-server/node_modules/express/lib/response.js:771:10) at ServerResponse.send (/moralis-server/node_modules/express/lib/response.js:170:12) at ServerResponse.json (/moralis-server/node_modules/express/lib/response.js:267:15) at /moralis-server/lib/PromiseRouter.js:214:13 at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) { code: 'ERR_HTTP_HEADERS_SENT' }
Here is our cloud functions.
const addWei = (weiArray = []) => {
// eg ['4553535353535', '20000000000', '50000']
const add = (a, b) => {
const amount = toBN(a)
const amountToAdd = b ? toBN(b) : false
if (amountToAdd) {
return amount.add(amountToAdd).toString()
// return wei string value
}
// return wei string value
return amount.toString()
}
const sumInWei = weiArray.reduce((acc, v, i) => {
if (!acc) return v
return add(acc, v)
}, '')
return sumInWei
}
const unconfirmedAmaUserAddressPresent = async (_object, _key) => {
let User = Moralis.Object.extend('UnconfirmedAmaUser')
let query = new Moralis.Query(User)
query.equalTo('address', _object.get(_key).toString())
let user = await query.first()
if (user == undefined) {
return false
} //User is not present
return user //User is present
}
const updateUnconfirmedUserQuestionReceived = async (user, value) => {
user.increment('questionsReceived')
let Value = addWei([unconfirmedUser.get('valueReceivedOnQuestions'), value])
user.set('valueReceivedOnQuestions', Value)
user.save().then(
(session) => {
logger.info('updateUnconfirmedUserQuestionReceived: User updated')
},
(error) => {
logger.info(
'updateUnconfirmedUserQuestionReceived: Failed to create new object, with error code: ' +
error.message
)
}
)
}
Moralis.Cloud.afterSave('QuestionCreated', async function (request) {
let confirmed = request.object.get('confirmed')
if (confirmed) {
let unconfirmedUser = await unconfirmedAmaUserAddressPresent(
request.object
)
if (unconfirmedUser) {
updateUnconfirmedUserQuestionReceived(
unconfirmedUser, request.object.get("value")
)
}
}
})