我的用例是一个具有本机反应的移动应用程序,但我想这是非常普遍的良好做法。
我希望能够在应用程序中(从相机或图库中)拍摄图像并能够存储该图像,以便可以从添加日期或添加了某些元数据的日期开始获取该图像用户。
理论似乎很简单,一种实现方法可以是:
这应该可行,并且应该很容易实现。 但是我想知道一些事情:
如果您有任何经验,技巧或好的做法可以分享,我将很乐意与您讨论:)
答案 0 :(得分:1)
您可以在Realm中存储二进制数据(图像)。但是,如果您在本地使用Realm(而非同步),我建议您将映像存储在文件系统上,并将路径存储在Realm中。您的模型可能类似于:
const ImageSchema = {
name: 'Image',
properties: {
path: 'string',
created: 'Date',
modified: 'Date?',
tags: 'Tag[]'
}
};
const TagSchema = {
name: 'Tag',
properties: {
name: 'string',
images: { type: 'linkingObjects', objectType: 'Image', property: 'tags' }
}
};
也就是说,对于每个图像,都会存储其创建的时间戳。此外,如果图像已被修改,它具有可选的时间戳。属性path
是查找图像的位置。如果您想存储图像,则可以使用类型data
的属性。要查找不到一周的图像,可以使用realm.objects('Image').filtered('created >= $1', new Date(Date.now()-7*24*60*60))
。
只是为了好玩,我为每个图像添加了一个标签列表。 linkingObject
中的Tag
可以查找所有带有特定标签(例如realm.objects('Tag').filtered('@links.Tag.name == "Dog"')
)的图像。