无法从数组 react 和 Firestore 获取数据
2018-10-27
1297
如何从数组中访问值 exist?我想我没有将数组传递进去?有任何帮助或建议吗?
var isExist = this.props.isFavorite(this.props.code);
console.log(isExist)
我有这个变量 isExist,其中包含来自下面控制台的响应。
[]
client: [id: "LvR05w9v9xrC3r4V1W8g", exist: true]
length: 1
_proto_:Array(0)
如何访问数组中的 exist?当我尝试 isExist[0].exist 时,我收到错误。有什么帮助吗?
isExist.exist = Undefined
isExist[0].exist = TypeError: Cannot read property 'exist' of undefined
我最喜欢的访问和推送数据到数组的方法
export const isFavorite = (data) => dispatch => {
let exist = [];
var clientQuery = firebase.firestore().collection(path).where('client_id', '==', data);
clientQuery.get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
var data = [];
data.id = doc.id;
data.exist = doc.exists;
exist.push(data)
});
});
return exist;
}
3个回答
isFavorite
返回一个函数,该函数接受一个参数
dispatch
并返回
exist
数组。您似乎使用异步代码来填充
exist
数组。因此,当该函数返回
exist
时,它是一个空数组
[]
。您需要继续使用承诺或使用
await
。并且您需要调用
isFavorite
返回的函数。
如果
this.props.isFavorite
和
const isFavorite
不同,请添加
this.props.isFavorite
的代码。
UjinT34
2018-10-27
您正在创建一个数组对象。然后是数组对象 {data}[]。因此,问题是,数据实际上不仅是一个数组,而且还是一个对象。
尝试这样做。
var data;
data.id = doc.id;
data.exist = doc.exist;
exist.push(data);
现在您将拥有存在数据,它将是一个对象数组。然后从中迭代。
exist[0].id;
//or try
exist[0].data.id;
//Depends on how you implement your data.
Aizen
2018-10-27
由于客户端数组不包含具有键和值的对象,我建议您尝试使用带有 split() 的索引数组来从数组中获取 id 值和存在值,例如
例如
var isExist = this.props.isFavorite(this.props.code);
var id = isExist.client[0];
var exist = isExist.client[1];
var idValue = id ? id.split(': '): '';
console.log(idValue);
const existValue = exist ? exist.split(': '): false;
console.log(existValue);
在这里将 data = []; array 更改为 data ={}; object
querySnapshot.forEach((doc) => {
var data = {};
data.id = doc.id;
data.exist = doc.exists;
exist.push(data)
});
Hemadri Dasari
2018-10-27