将对象替换为保存前已经存在的对象
Swapping out an object for one that already exists before save
是否有可能在使用Parse时有一个beforeSave
云函数,它不仅会修改被保存的对象,而且会将其交换为一个全新的对象。
例子…
我正在创建一个消息应用程序,使用自定义表情符号作为消息的一部分。
表情符号的图像都本地存储在设备上(旁边有一个列表来引用它们)。
因此,我在Parse中有一个Message
表,其中包含指向Emoji
表的指针数组。
Emoji
表只有一个imageName
条目,因此我存储的所有数据足以在所有设备上显示相同的图像。我不想上传和下载数百张图片。
所以,我现在的问题是,如果15个不同的人都用"Smiley Face"表情符号创建消息,那么我在表中有15个"Smiley Face"Emoji
对象,但它们本质上都是相同的。
我想做的是有一个云代码before save
函数,它将查看表情符号并找到一个相同的。如果它没有找到open,那么没关系,因为它会创建一个新的,但如果它找到了,那么它应该使用现有的,而不是创建一个副本。
当我创建消息时,我在一次保存中完成所有操作。我创建了message
对象,并添加了emoji
对象数组,然后在message
上运行后台保存(也保存了子对象)。
我还没有得到任何代码,因为我真的不是一个JS开发人员,所以我不想只是开始破解。如果能得到一些指导就好了。
你不能在beforeSave
中"重定向"一个对象,这样我就试图保存一个对象,而不是默默地更新另一个。你可以在beforeSave期间更新另一个对象,但为了防止保存新对象,你必须失败该操作,这听起来不像你想要做的。
可以给Message
添加一个beforeSave
钩子来更新指向Emoji
的指针。但是,在您的情况下,这不会阻止Emoji
中的新记录被创建,因为必须先创建这些记录才能创建Message
中的指针。
如果您确实需要在Parse中使用的从Message
到Emoji
的指针和,您只希望系统中的每个Emoji
有一条记录,您可以:
-
在启动时检索所有
Emoji
记录(并可能在本地缓存它们),并在创建新消息时将它们添加为指针 -
使用云代码功能创建消息,根据参数或消息内容查找
Emoji
您的消息表项可以使用指针(指向一个或多个解析文件)。
每个指针的详细信息…
{"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()可以返回与File POST解析返回相同的签名…ie {"fileName": ", "fileUrl": "}
,然后它有点独立(不知道作为新消息指针目标的属性值是指向现有文件还是指向新文件)。
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 验证会话中是否存在对象's数组
- 使用js/jQuery检查对象(而不是元素)是否真的存在
- 对象为null或IE9中存在未定义错误
- 如何通过json对象选项卡中的Id来检查对象是否存在
- underline-js:将键对象与数组键对象进行比较,如果存在,则移除现有的添加新的
- 查找数组's按属性不存在于另一个数组中的对象
- javascript检查对象存在
- 用javascript在对象上创建不存在的方法
- 为什么没有从数组中存在的对象中删除属性
- 我的无引用 JavaScript 对象存在在哪里以及存在多长时间
- 没有窗口对象存在 webpack nodejs
- 在从Flash调用javascript对象之前,请确保该对象存在
- JavaScript错误未定义对象,尽管对象存在
- JS Ajax onreadystatechange是没有定义的,虽然对象存在
- 对象存在吗?JavaScript对象
- 对象存在,但在youtube响应中仍未定义
- 仅当对象存在时,才从 javascript 中的 html 表单对象读取
- 全局处理javascript对象存在性检查
- 当只有一个对象存在时,Jquery返回两个对象