【发布时间】:2021-09-21 00:53:01
【问题描述】:
React Native Firebase 访问 Firestore 数据库
数据库 selectedJobTypesArr 字段是一个数字数组。元素是数字,因为它们直接来自选择列表
操作 . 我有一个函数使用 array-contains-any 来匹配 selectedJobTypesArr 中的任何值
export const hasMatchingJobType = (user_id, jobTypeCodeArr) => {
return new Promise((resolve, reject) => {
let foundFlag = false;
firestore()
.collection('profiles')
.where('user_id', '==', user_id)
.where('selectedJobTypesArr', 'array-contains-any', jobTypeCodeArr)
.orderBy('preferredName')
.get()
.then((value) => {
value.docs.map((doc) => {
foundFlag = true;
});
resolve(foundFlag);
});
});
};
为了测试它,我将其命名如下:
const user_id = 'TUJawBQN9ge9qNl1l5Qi320UZXK2';
const jobTypeCodeArr = [101, 102, 103, 104, 105];
hasMatchingJobType(user_id, jobTypeCodeArr).then((res) => {
console.log('res ', res);
});
预期行为 使用匹配数据调用时返回 true
实际行为 在 IOS 上返回 false。如果数据库数组元素是数字,则 array-contains-any 仅返回 Android 而非 IOS 的预期结果。 如果我将数据库元素更改为字符串,android 和 IOS 都会产生预期的结果。
环境 React Native Firebase 访问 Firestore 数据库 版本@react-native-firebase/firestore@11.4.1
Android build.gradle:
ext {
buildToolsVersion = "29.0.2"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
}
IOS: 包含指令的 podfile $FirebaseSDKVersion = '8.0.0'
【问题讨论】:
标签: swift react-native google-cloud-firestore react-native-firebase