Вы правы, когда пишете, что не можете позвонить res.json()
во второй раз. Вы можете отправить только один ответ на запрос. res.json()
отправляет ответ, поэтому вы можете позвонить только один раз (вы, вероятно, уже видели этот вопрос).
Вам не нужно отправлять ответ в базу данных. Только клиент, отправивший запрос, должен получить ответ. Вызов res.json()
ничего не отправит в базу данных. Чтобы сохранить объект userData
в базе данных, вы должны вызвать функцию, которая это делает. В вашем случае, я полагаю, вы делаете это с UserData.addUserData()
. Именно здесь происходит сохранение, а не отправка ответа на него.
Функция, которую вы отправляете в качестве аргумента UserData.addUserData()
, скорее всего, является обратным вызовом, который называется ПОСЛЕ сохранения объекта userData. По сути, UserData.addUserData()
сделает все то, что должен, а затем продолжит выполнение функции, которую вы написали после этого. Там вы можете позвонить res.json()
. Вы можете удалить последний звонок на res.json()
. Это не нужно, поскольку вы будете вызывать его в функции обратного вызова после завершения сохранения в базе данных.
paypal.payment.execute(paymentId, execute_payment_json, function (error, payment) {
if (error) {
console.log(error.response);
throw error;
} else {
console.log("Get Payment Response");
console.log(JSON.stringify(payment));
const userData = {paymentID : payment.id};
UserData.addUserData(userData, function(err, userData) {
if (err) {
throw err;
}
res.json(userData);
});
}
});
})