在保存之前交换已存在的对象

时间:2014-06-23 14:09:29

标签: javascript ios objective-c parse-platform

使用Parse时,是否可以使用beforeSave云函数,该函数不仅可以修改正在保存的对象,还可以将其换成全新的对象。

示例...

我正在创建一个使用自定义表情符号作为邮件一部分的消息传递应用。

表情符号的图像都存储在设备本地(沿着一个plist引用它们)。

所以,我在Parse中有一个Message表,其中有一个指向Emoji表的数组。

Emoji表只有一个imageName条目,因此我存储的所有数据都足以在所有设备上显示相同的图像。我不想上传和下载数百张图片。

所以,我现在遇到的问题是,如果15个不同的人都使用" Smiley Face"表情符号然后我有15"笑脸"表中的Emoji个对象,但它们基本相同。

我想要做的是拥有一个云代码before save功能,它会查看表情符号并找到一个相同的表情符号。如果它没有找到开放那么那很好,因为它只会创建一个新的但如果它确实那么它应该使用现有的而不是创建副本。

当我创建消息时,我会在一次保存中完成所有操作。我创建了message对象并添加了emoji个对象的数组,然后在message上运行后台保存(这也保存了孩子们)。

我还没有得到任何代码,因为我真的不是一个JS开发人员,所以我不想开始乱砍。很高兴得到一些指导。

2 个答案:

答案 0 :(得分:2)

您无法重定向" beforeSave中的对象,以便我尝试保存对象,而不是静默更新另一个对象。您可以在beforeSave期间更新另一个对象,但为了防止保存新对象,您必须使该操作失败并且听起来不像您想要做的那样。

您可以向beforeSave添加Message挂钩,以更新指向Emoji的指针。但是,在您的情况下,这不会阻止创建Emoji中的新记录,因为必须首先创建这些记录才能从Message创建指针。

如果您确实需要从Message到使用Emoji的Parse中的指针,您只需要系统中每个Emoji的一条记录,你可以:

  • 在启动时检索所有Emoji记录(并可能在本地缓存它们),并在创建新消息时将它们添加为指针

  • 使用云代码功能创建邮件,根据参数或邮件内容查找Emoji

答案 1 :(得分:1)

IMO您的消息表条目可以使用指针(对一个或多个解析文件)。

每个指针的详细信息......

{"toEmoji":{"__type":"File","name":"9d74eb8e-11bd-4bd0-9146-bc01c6656daa-......jpg","url":"http://files.parse.com/09d82830-ec2d-40b4-bb14-944728550685/9d74eb8e-11bd-4bd0-9146-bc01c6656daa-.......jpg"}}

因此,在对任何要上传新表情符号的文件执行POST操作之前,请运行您的进程以查找现有的DUPE。

onDupe()只能返回与要解析的文件POST返回的相同签名...   即{“fileName”:“”,“fileUrl”:“”}

然后它有点独立(不知道用作新消息指针的目标的属性值是指现有文件还是新文件)。