试图绕过在文本字段上执行聚合
Trying to get around performing Aggregation on a text field
我正在使用 Wix code/Javascript 尝试对数据库集合中的项目求和 - 唯一的问题是最初设置它的人将 nos
字段创建为文本而不是整数。
出于某种原因,我可以对 returns 为 1 的数据库执行 max
聚合,但我无法对其求和。 (returns 0)
我的看法是,我有两个选择:
煞费苦心地为 nos
创建一个具有正确数据类型的新字段,然后复制数据并更改该字段的所有输入(不太喜欢这个想法,因为它是一个实时数据库)
可能使用函数 $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
我正在使用 Wix code/Javascript 尝试对数据库集合中的项目求和 - 唯一的问题是最初设置它的人将 nos
字段创建为文本而不是整数。
出于某种原因,我可以对 returns 为 1 的数据库执行 max
聚合,但我无法对其求和。 (returns 0)
我的看法是,我有两个选择:
煞费苦心地为
nos
创建一个具有正确数据类型的新字段,然后复制数据并更改该字段的所有输入(不太喜欢这个想法,因为它是一个实时数据库)可能使用函数
$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