问题描述
我试图每隔一段时间更新一个值,但现在一行函数代码显示错误:目标不是数字
const db = require('quick.db');
module.exports = {
name: 'farmstart',description: 'Gives you your first chicken to start farming with.',execute: async (message,args,discord) => {
let user = message.author
let chickens = await db.fetch(`chickens_${user.id}`)
let water = await db.fetch(`water_${user.id}`)
function updatewater() {
chickens = db.fetch(`chickens_${user.id}`)
water = db.fetch(`water_${user.id}`)
if (water < chickens) {
let waterdif = chickens - water
db.subtract(`chickens_${user.id}`,waterdif)
console.log(`took ${waterdif} water from ${user.tag}`)
}
setTimeout(updatewater,21600000)
}
setTimeout(updatewater,5000)
}
}
这是在 db.subtract 处返回错误的代码。我已经尝试了所有我能想到的方法,但它仍然不起作用
解决方法
if (isNaN(fetched.json)) throw new Error('Target is not a number.'); ^ 错误:目标不是数字。在 Object.module.exports [作为减法]
错误是因为您将对象作为参数传递给 isNan()
,但 isNan()
函数需要单个值作为参数。例如:isNaN('x')
返回 true。所以你需要映射这些值,然后检查它是否是一个数字。
例如:
const obj = {"a0":{"count":1,"name":"object1"},"a1":{"count":2,"name":"object2"},"a2":{"count":"letter","name":"object3"},"a3":{"count":4,"name":"object4"}};
const result = Object.keys(obj).map((key) => {
const o = obj[key];
console.log(isNaN(o.count));
});