0

我试图经常更新一个值,但现在一行代码显示错误:目标不是数字

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 处返回错误的代码。我已经尝试了我能想到的一切,但它仍然不起作用

4

1 回答 1

0

if (isNaN(fetched.json)) throw new Error('目标不是数字。'); ^ 错误:目标不是数字。在 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));
  });

于 2021-05-03T05:07:33.440 回答