質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Q&A

解決済

1回答

485閲覧

Firebaseのエラー

21212121

総合スコア61

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

0グッド

0クリップ

投稿2020/04/03 12:39

編集2020/04/03 12:52

イメージ説明現在FirebaseのでタータベースからデータをもらってAPIを叩いているのですが、このようなエラーが起こってしまいました。

{ "error" : "Index not defined, add \".indexOn\": \"title\", for path \"/ingredients\", to the rules" }

indexOnを試しにルールに追加してみたのですが、解決することができませんでした。
イメージ説明

ご教授いただけると幸いです。

Search.js

import React,{useState,useEffect} from 'react'; import Card from '../UI/Card'; import './Search.css'; const Search = React.memo(props => { const {onLoadIngredients} = props const [enteredFilter,setEnteredFilter] = useState(''); useEffect(() => { const query = enteredFilter.length === 0 ? '' : `?orderBy="title"&equalTo="${enteredFilter}"`; fetch(`https://react-hooks-update-676a6.firebaseio.com/ingredients.json${query}`, ) .then(response => { console.log(response); response.json() }) .then(responseData => { console.log(responseData) const loadedIngredients = []; for (const key in responseData) { loadedIngredients.push({ id: key, title: responseData[key].title, amount: responseData[key].amount }); } onLoadIngredients(loadedIngredients); }); }, [enteredFilter, onLoadIngredients]); return ( <section className="search"> <Card> <div className="search-input"> <label>Filter by Title</label> <input type="text" value={enteredFilter} onChange={event => setEnteredFilter(event.target.value)} /> </div> </Card> </section> ); }); export default Search;

Ingredients.js

import React,{useState,useEffect,useCallback} from 'react'; import IngredientList from './IngredientList' import IngredientForm from './IngredientForm'; import Search from './Search'; function Ingredients() { const [useringredients,setUserIngredients] = useState([]); useEffect(() =>{ fetch('https://react-hooks-update-676a6.firebaseio.com/ingredients.json').then( responese=>responese.json() ).then(responeseData=>{ const loadedIngredients = []; for(const key in responeseData){ loadedIngredients.push({ id:key, title:responeseData[key].title, amount:responeseData[key].amount }) } setUserIngredients(loadedIngredients); }) },[]); useEffect(() =>{ console.log('RENDRING INGREDIENTS',useringredients) },[useringredients]) const filteredIngredientsHandler = useCallback(filteredIngredients => { setUserIngredients(filteredIngredients); }, []); const addIngredientHandler = ingredient => { fetch('https://react-hooks-update-676a6.firebaseio.com/ingredients.json', { method: 'POST', body: JSON.stringify(ingredient), headers: { 'Content-Type': 'application/json' } }) .then(response => { return response.json(); }) .then(responseData => { setUserIngredients(prevIngredients => [ ...prevIngredients, { id: responseData.name, ...ingredient } ]); }); }; const removeIngredientHandler = ingredientId => { setUserIngredients(prevIngredients => prevIngredients.filter(ingredient => ingredient.id !== ingredientId) ); }; return ( <div className="App"> <IngredientForm onAddIngredient={addIngredientHandler}/> <section> <Search onLoadIngredients={filteredIngredientsHandler}/>  <IngredientList ingredients={useringredients} onRemoveItem={removeIngredientHandler}/> </section> </div> ); } export default Ingredients;

こちらコードです。
現在Udemyを元に学習しているので、中々質問がしづらくなってしまいました。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2020/04/03 12:47

こちらのコードの参考元等はありますか?
21212121

2020/04/03 12:54

Udemyの講座をみながら進めております。 コードなどは記して起きました。 お忙しい中恐縮ですがよろしくお願いします。
guest

回答1

0

自己解決

{
"rules": {
".read": true,
".write": true,
"ingredients": {
".indexOn": ["title"]
}
}
}
に変えたら治りました。

投稿2020/04/03 15:08

21212121

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問