aliyun-sdk-js icon indicating copy to clipboard operation
aliyun-sdk-js copied to clipboard

OpenSearch uploadDoc方法不能传Array类型的数据

Open dennis-jiang opened this issue 8 years ago • 11 comments

我有一个字段,在OpenSearch设置的类型是INT_ARRAY. 数据示例如下: "producttagids_intarray":[3,3,2,9,39,38,27,21,20,19,16,17,18,15,14,13,12,22,11,10,23,24,25,26,35,34,33,32,31,30,29,4,6,7,8,5]

注意,这是一个INT的数组,当我上传这个字段的时候我拿到一个错误: InvalidParameterType: Expected params.items[0].fields['producttagids_intarray'] to be a string

事实上这个字段不能转成string上传,不然阿里云不认识。 请将上传数据的限制条件修改一下,让他能支持Array类型。

谢谢

dennis-jiang avatar Aug 30 '16 10:08 dennis-jiang

我发现没有指定数据类型的数据,都会走到this.validateScalar(),这个方法里面都会把这些用户自定义的数据类型当做String处理,这边的逻辑需要优化

dennis-jiang avatar Aug 31 '16 02:08 dennis-jiang

可以考虑用户自定义的字段全部放过,不检查

dennis-jiang avatar Aug 31 '16 02:08 dennis-jiang

这里没有配置,应该是默认不进行验证吧,为什么会默认使用 string 进行验证?@xiong-liang

goto100 avatar Sep 02 '16 06:09 goto100

没有配置,验证条件就是空,看 https://github.com/aliyun-UED/aliyun-sdk-js/blob/master/lib/param_validator.js#L100: case null: case undefined: case 'string': return this.validateType(context, value, ['string']);

null和undefined都走到了string

dennis-jiang avatar Sep 03 '16 02:09 dennis-jiang

您好,请提供完整调用代码我看一下。

chylvina avatar Sep 05 '16 04:09 chylvina

今天也遇到这个问题了,请问这个现在有解决的办法吗?(:з」∠)

sotuil avatar Apr 26 '17 14:04 sotuil

请问这个问题解决了吗?我的字段类型是literal_array,也是报这个错?急!

ningkyolei avatar Dec 21 '18 01:12 ningkyolei

没有配置,验证条件就是空,看 https://github.com/aliyun-UED/aliyun-sdk-js/blob/master/lib/param_validator.js#L100: case null: case undefined: case 'string': return this.validateType(context, value, ['string']);

null和undefined都走到了string

请问最后这个问题,您最后是怎么解决的?

ningkyolei avatar Dec 21 '18 01:12 ningkyolei

今天也遇到这个问题了,请问这个现在有解决的办法吗?(:з」∠)

请问最后这个问题,您最后是怎么解决的?

ningkyolei avatar Dec 21 '18 01:12 ningkyolei

今天也遇到这个问题了,请问这个现在有解决的办法吗?(:з」∠)

请问最后这个问题,您最后是怎么解决的?

fork这个项目然后把里面会触发报错的代码改掉,然后用自己的项目发布的npm模块

Liutos avatar Dec 21 '18 02:12 Liutos

今天也遇到这个问题了,请问这个现在有解决的办法吗?(:з」∠)

请问最后这个问题,您最后是怎么解决的?

fork这个项目然后把里面会触发报错的代码改掉,然后用自己的项目发布的npm模块

我最后这样解决了:

1)修改他的源代码: node_modules/aliyun-sdk/lib/param_validator.js

大概99行至104行 ···· switch (rules.type) { case null: case undefined: +++ return; case 'string': return this.validateType(context, value, ['string']); ···· 2)调用uploadDoc前,传入fields时,如果值是数组,直接传入值;否则,将值转换成字符串再传入

ningkyolei avatar Dec 21 '18 03:12 ningkyolei