云函数中调用set()就保存数据了?

createWithoutData 后面应该是有 objectId 作为参数的呀,应该不会出现两个 objectId 一样的记录。还请再检查下代码。

前端调用 createWithoutData 不加 objectId 就会建立一条新记录,通过云函数调用时却一次就产生了2条记录,从createdAt就能看得出这2条数据是同时产生的,不过objectId和ACL会不同。然后我发现在使用set()时记录就已经产生了,再使用save()就导致多产生一条记录。在前端调用createWithoutData时是没有这个问题的

前端调用 createWithoutData 不加 objectId 就会建立一条新记录

用的 SDK 的版本是多少?按说如果不加 objectId,SDK 会报错 The objectId must be provided

建议修改代码,不要使用「调用 createWithoutData 不加 objectId」这种用法,当前 SDK 是不支持这种用法的,老版 SDK 的行为我不确定,很可能是有 bug 而造成凑巧可以这么调用。

已经更改为:
new AV.Object('ORD_data').set(info).save()

但还是一样的结果,set()时产生一条记录,save()再产生另一条数据,createdAt是一样的。前端这样调用是正常的,云函数用这种方式调用就产生2条记录了

我没能复现您遇到的问题。请检查代码是否其他地方有问题(比如重复调用之类的),如果代码没问题的话,可能是老版 SDK 的 bug,还请升级一下(请确认项目的 package.jsonleancloud-storageleanengine 的版本都是 3.X 以上)。

附:我在云引擎上定义的云函数

new AV.Object('Todo').set({ 'content': 'this is just a test' }).save().then(console.log, console.error);
return {}

非常感谢您耐心的答复,我有空再试试