【问题标题】:target is not a number quick.db目标不是数字 quick.db
【发布时间】:2021-07-24 06:41:28
【问题描述】:

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

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 处返回错误的代码。我已经尝试了所有我能想到的方法,但仍然无法正常工作

【问题讨论】:

  • 就像它说的那样,db.subtract() 需要一个数字,但您提供了一个字符串。你能提供完整的错误吗?
  • if (isNaN(fetched.json)) throw new Error('Target is not a number.'); ^ 错误:目标不是数字。在 Object.module.exports [作为减法]

标签: discord.js quick.db


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 2021-02-01
    • 2019-03-14
    • 2020-04-24
    • 2021-02-20
    • 2021-07-30
    • 1970-01-01
    • 2021-05-31
    • 2020-11-27
    相关资源
    最近更新 更多