在React Native上使用Firestor。
我收到此错误:
错误:Query.get失败:第一个参数必须是一个对象
当我尝试从其他集合(项目)中获取用户数据时,但这不起作用。
export const itemsFetch = () => {
return (dispatch) => {
firebase.firestore().collection('items').get()
.then((snapshot) => {
const items = snapshot.docs.map(doc => doc.data());
return items
})
.then((items) => {
const userPromises = items.map((item, itemId) => {
const userId = item.userId;
console.log('userId: ', userId);
return firebase.firestore().collection('users').get(userId)
.then((snapshot) => {
console.log('snapshot:', snapshot);
const user = snapshot.docs.data();
return user;
console.log('user:', user);
})
.then(user => ({...item, user: user, itemId}));
});
dispatch({ type: 'ui/loading/hide' });
return Promise.all(userPromises);
})
};
};
我可以获取数据snapshot
,但我仍然无法实现。
答案 0 :(得分:1)
get()不接受这样的参数:
return firebase.firestore().collection('users').get(userId)
如果要按ID提取文档,则需要使用doc()构建DocumentReference,然后在其上调用get():
return firebase.firestore().collection('users').doc(userId).get()
这将返回一个承诺,并产生一个包含该文档内容的DocumentSnapshot。
答案 1 :(得分:1)
请参阅QuerySnapshot文档。 .where
是可选的。
let query = firestore.collection('col').where('foo', '==', 'bar');
query.get().then(querySnapshot => {
let docs = querySnapshot.docs;
for (let doc of docs) {
console.log(`Document found at path: ${doc.ref.path}`);
}
});