CastError: сбой приведения к строке для значения - PullRequest
0 голосов
/ 27 мая 2018

Я хотел создать модуль транзакции, в котором после успешной транзакции будет также обновляться документ пользователя (в этом случае пользователь отправляет деньги другому пользователю).

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"

Почему возникает эта ошибка? Я хочу ваше предложение, пожалуйста!Спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вы не можете использовать слово «тип» в качестве объекта.Просто переименуйте в что-то еще, например, что-то типа.

0 голосов
/ 29 мая 2018

Корень проблемы в том, как я определил свойствоaction_history.Предполагалось, что это синтаксически массив объектов [{}], но тогда я написал его тип - String.Поэтому, когда я пытался вставить строку в качестве значения «type», он выдает ошибку, так как не удалось отправить строку в объект «action_history ».Чтобы решить эту проблему, достаточно удалить свойство типа.Моя ошибка - использовать зарезервированное слово в качестве ключа в объекте. Поэтому я заменил «тип» на что-то другое в модели.вот и все!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...