试图绕过在文本字段上执行聚合

Trying to get around performing Aggregation on a text field

我正在使用 Wix code/Javascript 尝试对数据库集合中的项目求和 - 唯一的问题是最初设置它的人将 nos 字段创建为文本而不是整数。

出于某种原因,我可以对 returns 为 1 的数据库执行 max 聚合,但我无法对其求和。 (returns 0)

我的看法是,我有两个选择:

  1. 煞费苦心地为 nos 创建一个具有正确数据类型的新字段,然后复制数据并更改该字段的所有输入(不太喜欢这个想法,因为它是一个实时数据库)

  2. 可能使用函数 $convert: 将文本值更改为 int 以允许求和

我的代码如下:

import wixData from 'wix-data';
import wixUsers from 'wix-users';

$w.onReady( function() {
   const filter = wixData.filter().eq("_owner", "SomeHashedValue");
   wixData.aggregate("CollectionName")
   .filter(filter)
   .group("_owner")
   .sum("nos", "sumnos")
   .run()
   .then( (results) => {
      console.log(results.items)
   } )
} )

有人知道选项 2 是否可行或者是否有更好的方法? 注意:我知道我没有在代码中使用 wix-users 但我会的,测试不使用它更容易!

不确定 Wix,但在 JavaScript 中,您可以使用全局方法轻松地将字符串转换为数字(int 或 float):

var myString = "2";

var myNumber = Number(myString); // 2
var myInt = parseInt(myString); // 2
var myFloat = parseFloat(myString); // 2

Shorthand 把字符串转成数字就是在字符串前加上'+':

var anothernumber = +myString; // 2

MDN link for Number