我有一个集合:dependencies [[log4j/log4j "1.2.17"]]
,如果该记录不存在,我想要更新或插入。
当我运行这样的方法时,
balances
我能够upsert但在引入变量时失败。
这是
中变量的外观Meteor.methods({
upsertfun:function(userid){
//let balance = 0;
//var balance = Balances.findOne({userid:userid}).balance;
//if(balance == null){balance = 0;}
var paypal_gross = 200;
//var updatedbalance = parseInt(balance) + parseInt(paypal_gross);
Balances.update({
userid: userid,
balance: 30
}, {
$set: {
userid: userid,
balance: 543
}
}, {
upsert: true
})
}
});
出于某种原因,这会导致错误500,服务器错误。我该怎么做才能解决这个问题?。
答案 0 :(得分:0)
我忘记检查记录是否存在
Meteor.methods({
upsertfun:function(userid){
var selector = {
"userid": userid
};
var this_exists = Balances.find(selector, {limit: 1}).count() > 0;
if(this_exists == true) {
console.log('exists');
} else {
Balances.insert({userid:userid,balance:0});
}
//let balance = 0;
var balance = Balances.findOne({userid:userid}).balance;
if(balance == null){balance = 0;}
var paypal_gross = 200;
var updatedbalance = parseInt(balance) + parseInt(paypal_gross);
Balances.update({
userid: userid,
balance: balance
}, {
$set: {
userid: userid,
balance: updatedbalance
}
}, {
upsert: true
})
}
});
答案 1 :(得分:0)
upsert方法可以有4个参数:queryDocument,changeDocument,options,callback。 options参数可以是{upsert:true}
答案 2 :(得分:0)
你的代码有点脏。注意像Balances.findOne().balance
这样的对象链。当findOne()
返回null时,您会收到致命错误,因为您尝试访问null对象的未定义属性。
var balance_item = Balances.findOne({ userid: userid });
var balance = 0;
if (balance_item) {
balance = balance_item.balance;
}
var paypal_gross = 200;
var updatedbalance = parseInt(balance) + parseInt(paypal_gross);
Balances.update({
userid: userid,
balance: balance
}, {
$set: {
userid: userid,
balance: updatedbalance
}
}, {
upsert: true
})