いつもお世話になっております。
React Nativeと、Firebaseを使って、TODOアプリを作っています。
取得した曜日(getDay)と、TODOを作った時に指定した曜日が一致している時にホームに表示する仕組みを実装したいと考えています。
Firebaseには、orderByChildでフィルタリングできるのですが、複数のキーワードを指定することができませんでした。
例)
月曜と、火曜にゴミ出しをすると指定して、TODOを作成する。
実際の曜日が月曜になると、ホームにTODOとして表示される。
開発環境
react-native 0.53.0
react-native-firebase ^3.2.2
エラー
for文もしくは、lodashを使うのが適切かなとも思っていますが
まだやり方を迷っています。
ソースコード
Firebaseに保管されているJSONデータ
todoActions.js(redux)
JavaScript
1export const todosFetch = () => { 2 console.debug("todosFetch start"); 3 4 return (dispatch) => { 5 firebase.database().ref(`/todos/`) 6 // Firebaseならここで .orderByChild でフィルターします 7 .once('value', snapshot => { 8 // ここでfor文かlodashの処理が必要かと考えています 9 const todos = snapshot.val(); 10 return todos; 11 }) 12 .then((todos) => { 13 const userPromises = _.map(todos.val(), async (todo, todoId) => { 14 return firebase.database().ref(`/users/${todo.uid}`).once('value') 15 .then(snapshot => snapshot.val()) 16 .then(user => ({...todo, user, todoId})); 17 }); 18 dispatch({ type: 'ui/loading/hide' }); 19 return Promise.all(userPromises); 20 }) 21 .then(todoItems => { 22 dispatch({ type: 'todos_fetch_success', payload: todoItems }); 23 }); 24 }; 25};
回答2件
あなたの回答
tips
プレビュー