Я хотел создать модуль транзакции, в котором после успешной транзакции будет также обновляться документ пользователя (в этом случае пользователь отправляет деньги другому пользователю).
a.в user.js (это модель пользователя), кроме name, pw, email (и т. д.), я создал это свойство, которое будет хранить историю транзакций соответствующего пользователя.Посмотрите, пожалуйста, как я это использовал:
transaction_history:[{
transactionid:String,
timestamp:String,
type:String,
balance:Number,
status:String
}]
b.когда отправитель нажимает кнопку «Отправить» в форме, создается документ транзакции, после чего необходимо обновить документ пользователя (здесь отправитель) вместе с информацией о транзакции.
//create transaction document, works fine
Transaction.create({transactionid:uniqid(),
timestamp:moment().format(datemask),
amount:balance,
sender:sendfrom,
receiver:sendto,
status:"done"
}, function(err, tr){
if(err) throw err;
else {
//I want sender document to update with transaction info
User.findOne({email:sendfrom}, function(err, sendfrom){
if(err) {console.log("error at sender side");}
else
if(sendfrom!=null){
// console.log("tr: "+tr); //fine
sendfrom.balance-=balance;
sendfrom.transaction_history.push({
transactionid:tr.transactionid,
// timestamp:tr.timestamp,
// type:"debit",
// balance:tr.amount,
// status:tr.status
}
);
sendfrom.save();
console.log("sender's current balance is: "+sendfrom.balance);
};
});
}});
c.Но тогда я получаю это:
events.js:163
throw er; // Unhandled 'error' event
^
CastError: Cast to string failed for value "{ transactionid: '1amhrummxjhnhv0w4' }" at path "transaction_history"
Почему возникает эта ошибка? Я хочу ваше предложение, пожалуйста!Спасибо