node.js - CastError:转换为字符串的值失败
问题描述
我想创建一个交易模块,在成功交易后,用户文档(在这种情况下是用户向另一个用户汇款)也将被更新。
一个。在 user.js(这是用户模型)中,除了姓名、密码、电子邮件(等)之外,我创建了这个属性,它将保存各个用户的交易相关历史记录。请看我是如何使用它的:
transaction_history:[{
transactionid:String,
timestamp:String,
type:String,
balance:Number,
status:String
}]
湾。当发件人单击表单中的发送按钮时,会创建一个交易文档,之后用户文档(此处为发件人)应与交易信息一起更新。
//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"
为什么会发生此错误?我需要您的建议!谢谢
解决方案
您不能将“类型”一词用作对象。只需重命名为“something_type”之类的其他名称。
推荐阅读
- iphone - Flutter Webview 地图
- html - 在垂直菜单中将项目推到底部
- python - Flask App 不能用单个浏览器处理超过 6 个请求
- angular - 搜索对象数组的 Ngif 条件
- r - 为什么我在 r 中得到两个不同的 R^2,哪一个是正确的?
- geoserver - 生成 Geoserver 地图切片
- javascript - 如何在谷歌应用脚本中发布“所有”复选框值?
- android - 如何在 Android Q 上断开网络连接?
- java - 如何在java中比较两个对象(具有未排序的值)
- windows - 如何保存我所有 Active Directory 的用户 c:\