mysql 使用typescript的javascript reduce方法中出错

0qx6xfy6  于 2023-01-12  发布在  Mysql
关注(0)|答案(1)|浏览(84)

我正在通过构建一个节点应用程序来学习Typescript。我正在通过sequelize使用MySQL作为数据库。我想在从数据库中得到的结果中使用.reduce()方法。
下面是我的代码:

const orderedInstances = await createOrderedItemClass.findAll({where: {cartId: 
 cart.dataValues.id}});

 orderedInstances.reduce((prev, current)=>{
        
        return prev.dataValues.food_total_sum as number + current.dataValues.food_total_sum as 
   number
   },)

下面是我在typescript中的错误:

Argument of type '(prev: createOrderedItemClass, current: createOrderedItemClass) => number' 
is not assignable to parameter of type '(previousValue: createOrderedItemClass, currentValue: 
createOrderedItemClass, currentIndex: number, array: createOrderedItemClass[]) => 
createOrderedItemClass'.
Type 'number' is not assignable to type 'createOrderedItemClass'.

我该怎么解决这个问题?

flvlnr44

flvlnr441#

Reduce的工作方式不同,它不是prev和current值,而更像是accumulator和current值,所以迭代的结果存储在第一个参数中,在你的例子中是'prev'。迭代的结果是一个数字。你试图访问dataValues.food_sum,但这是一个错误。
试着这样做:

const orderedInstances = await createOrderedItemClass.findAll({where: {cartId: 
 cart.dataValues.id}});

 orderedInstances.reduce((prev, current)=>{
        
        return prev + current.dataValues.food_total_sum as 
   number
   }, 0)

相关问题