React Native中能否不发起查询直接读取Pointer类型字段的值
React Native 中 Pointer 类型字段读取方案
能否直接使用 book.get('publisher').get('name') 取值
该写法是否生效取决于你是否提前拉取了Pointer关联的完整对象:
- 如果你在查询主对象时已经通过
include方法将publisher关联对象完整拉取到本地,该写法可以正常拿到对应字段值 - 如果你没有做关联拉取,此时
book.get('publisher')仅会返回包含className、objectId两个基础字段的空Pointer实例,调用get('name')只会返回undefined
Pointer 对象信息读取最优方案
1. 查询阶段关联拉取(首推方案)
在构造主对象的查询时直接指定需要关联拉取的Pointer字段,仅发起一次网络请求即可拿到全部所需数据,性能最优:
// 以Parse SDK为例 const BookQuery = new Parse.Query('Book') // 声明需要关联拉取的Pointer字段 BookQuery.include('publisher') const targetBook = await BookQuery.get(bookId) // 可直接安全读取关联对象字段 const publisherName = targetBook.get('publisher').get('name')
2. 单独拉取Pointer对象(备用方案)
如果已经获取到主对象、且未提前关联拉取Pointer字段,可以单独调用fetch方法拉取关联对象的完整信息,该方案会额外发起一次网络请求,适合不想重新查询主对象的场景:
const publisherPointer = targetBook.get('publisher') const fullPublisher = await publisherPointer.fetch() const publisherName = fullPublisher.get('name')
3. 安全取值优化
无论用哪种方案,都建议添加空值判断,避免Pointer为空、关联对象被删除等异常场景导致的崩溃:
const publisherName = targetBook.get('publisher')?.get('name') ?? '未知出版社'
内容的提问来源于stack exchange,提问作者Ty Todd
相关产品推荐
相关产品推荐

