我對javascript并不是那么缺乏經驗,但這只是讓我感到困惑。我正在嘗試為我的不和諧機器人制作一個經濟系統,并且我正在使用 mongodb。現在,我正在發出存款命令,我所做的只是從用戶的錢包中減去命令中給出的金額,然后將其添加到用戶的銀行賬戶中。代碼:
const balanceProfile = await client.createBalance(message.member);
const amount = args[0];
if(isNaN(args[0])) return message.reply(`Specify an amount to deposit.`);
if(amount > balanceProfile.wallet) return message.reply(`Too much money to deposit.`);
try {
await Balance.findOneAndUpdate({
_id: balanceProfile.id,
wallet: balanceProfile.wallet - amount,
bank: balanceProfile.bank amount
});
} catch (error) {
console.log(error);
}
message.reply(`Successfully deposited ${amount} moneyz to da bank!`)
}
}
蒙戈模式:
const mongoose = require('mongoose');
const balanceSchema = new mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
memberId: String,
wallet: { type: Number, default: 0 },
bank: { type: Number, default: 0 },
daily: { type: Number }
});
module.exports = mongoose.model('Balance', balanceSchema, 'balances');
錢包作業正常,它完美地從錢包中減去了金額。但是,我的問題是,它沒有將金額添加到銀行,而是將數字添加到數字的末尾。因此,如果我將 5 美元存入我的銀行,而我的銀行中已經有 7 美元,那么我的銀行將獲得 75 美元。(我希望它為我的銀行增加 5 美元,而不是我的銀行的字面數字 5)。沒有任何錯誤,我不知道要搜索什么來解決這個問題,也找不到任何關于此的先前問題。任何幫助,將不勝感激。
旁注:我也嘗試使用 = 陳述句。
uj5u.com熱心網友回復:
即使您的bank欄位被宣告為 a Number,正常的 JavaScript 型別強制規則仍然適用,并在 ECMAScript 的第 13.15.3 節ApplyStringOrNumericBinaryOperator中指定。
如果
Type(lprim)是String或Type(rprim)是String, 那么一世。讓
lstr?ToString(lprim).ii. 讓
rstr?ToString(rprim).iii.
lstr回傳和的字串連接rstr。
您將從這里獲得要添加的價值:
const amount = args[0];
if(isNaN(args[0])) return message.reply(`Specify an amount to deposit.`);
args[0]很可能是一個字串,并且將一個字串添加到一個數字會將該數字強制轉換為一個字串:
const balance = 7;
const deposit = '5';
console.log('New balance is', balance deposit);
看起來你想先決議args[0]:
const balance = 7;
const deposit = Number('5');
console.log('New balance is', balance deposit);
所以是這樣的:
const amount = Number(args[0]);
if(isNaN(amount)) return message.reply(`Specify an amount to deposit.`);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/489814.html
標籤:javascript mongodb 数学 不和谐.js
