目标不是数字 quick.db

问题描述

我试图每隔一段时间更新一个值,但现在一行函数代码显示错误:目标不是数字

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));
  });