Hello everyone, today I will share about how to
read
,write
anddelete
data infirebase
. This article is only for beginners, those who have master, then please help me.
To help me understand, please give me a specific example. This article will help us get a list of restaurants in Danang, then I will add, update and delete a particular restaurant. The restaurant has the following information: name of the restaurant, address, telephone number and classification (for example, a shop selling milk tea, selling seafood, selling barbecue …).
Okay, let’s get started!
1. Get a database reference
To read
or write
data from the database
, I first need to refer to the firebase database
as follows:
1 2 | <span class="token keyword">var</span> database <span class="token operator">=</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
2. Reading and writing data
I have a database
structure like this:
1 2 3 4 5 6 7 8 | restaurant <span class="token operator">=</span> <span class="token punctuation">{</span> id <span class="token punctuation">:</span> <span class="token punctuation">(</span> auto <span class="token operator">-</span> <span class="token constant">ID</span> <span class="token keyword">of</span> firebase <span class="token punctuation">)</span> <span class="token punctuation">,</span> name <span class="token punctuation">:</span> String <span class="token punctuation">,</span> address <span class="token punctuation">:</span> String <span class="token punctuation">,</span> phoneNumber <span class="token punctuation">:</span> String <span class="token punctuation">,</span> category <span class="token punctuation">:</span> String <span class="token punctuation">,</span> <span class="token punctuation">}</span> |
Read the records included in the collection
1 2 3 4 5 | <span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">getRestaurants</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">const</span> querySnapshot <span class="token operator">=</span> <span class="token keyword">await</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">collection</span> <span class="token punctuation">(</span> <span class="token string">'restaurant'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token keyword">get</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">return</span> querySnapshot <span class="token punctuation">.</span> <span class="token function">data</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Function
above Function
not returned to me an array
of this structure.
1 2 3 4 5 | array <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> id <span class="token punctuation">:</span> <span class="token string">'EfP6PSqfvuxvLy990zf7'</span> <span class="token punctuation">,</span> name <span class="token punctuation">:</span> <span class="token string">'Hải sản Bà Rô 1'</span> <span class="token punctuation">,</span> address <span class="token punctuation">:</span> <span class="token string">'115 Lý Tử Tấn, Thọ Quang, Sơn Trà, Đà Nẵng, Vietnam'</span> <span class="token punctuation">,</span> phone <span class="token punctuation">:</span> <span class="token string">'0787659363'</span> <span class="token punctuation">,</span> category <span class="token punctuation">:</span> <span class="token string">'Hải sản tươi'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> id <span class="token punctuation">:</span> <span class="token string">'CJYcEhO8Owh3aC3fnCKJ'</span> <span class="token punctuation">,</span> name <span class="token punctuation">:</span> <span class="token string">'Mọi - Lẫu Nướng'</span> <span class="token punctuation">,</span> address <span class="token punctuation">:</span> <span class="token string">'114 Núi Thành, Hòa Thuận Đông, Hải Châu, Đà Nẵng'</span> <span class="token punctuation">,</span> phone <span class="token punctuation">:</span> <span class="token string">'0905616245'</span> <span class="token punctuation">,</span> category <span class="token punctuation">:</span> <span class="token string">'Lẩu Nướng'</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> |
You can write a separate function
as below to be able to import
and use only:
1 2 3 4 5 6 7 | <span class="token keyword">export</span> <span class="token keyword">function</span> <span class="token function">getDataFromDocument</span> <span class="token punctuation">(</span> doc <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token punctuation">{</span> <span class="token operator">...</span> doc <span class="token punctuation">.</span> <span class="token function">data</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> id <span class="token punctuation">:</span> doc <span class="token punctuation">.</span> id <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Okay, I adjusted the get
restaurant function as follows:
1 2 3 4 5 | <span class="token keyword">export</span> <span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">getRestaurants</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">const</span> querySnapshot <span class="token operator">=</span> <span class="token keyword">await</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">collection</span> <span class="token punctuation">(</span> <span class="token string">'restaurant'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token keyword">get</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token keyword">return</span> querySnapshot <span class="token punctuation">.</span> docs <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> getDataFromDocument <span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Add, update a record
Now to add a record
, we use the firebase
add()
:
1 2 3 4 5 6 7 8 | <span class="token comment">// Example data to add</span> <span class="token keyword">const</span> a <span class="token operator">=</span> <span class="token punctuation">{</span> name <span class="token punctuation">:</span> <span class="token string">'Mộc Tea'</span> <span class="token punctuation">,</span> address <span class="token punctuation">:</span> <span class="token string">'29 Lê Đại Hành, Khuêõ Trung, Cẩm Lệ, Đà Nẵng'</span> <span class="token punctuation">,</span> phoneNumber <span class="token punctuation">:</span> <span class="token string">'0345342444'</span> <span class="token punctuation">,</span> category <span class="token punctuation">:</span> <span class="token string">'Trà sữa, ăn vặt'</span> <span class="token punctuation">}</span> <span class="token comment">// Create a record</span> <span class="token keyword">export</span> <span class="token keyword">function</span> <span class="token function">createRestaurant</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> data <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">collection</span> <span class="token punctuation">(</span> <span class="token string">'restaurant'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">add</span> <span class="token punctuation">(</span> data <span class="token punctuation">)</span> <span class="token punctuation">}</span> |
When updating a record
we will pass the data and id
of the record to be update
and use update()
:
1 2 3 4 5 | <span class="token comment">// Update a record with id passed: restaurantId</span> <span class="token keyword">export</span> <span class="token keyword">function</span> <span class="token function">updateRestaurant</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> data <span class="token punctuation">,</span> restaurantId <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">collection</span> <span class="token punctuation">(</span> <span class="token string">'restaurant'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">doc</span> <span class="token punctuation">(</span> restaurantId <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">update</span> <span class="token punctuation">(</span> data <span class="token punctuation">)</span> <span class="token punctuation">}</span> |
Delete a record
For simple deletion we just need to use detete()
and remember to pass the id of the record
be deleted.
1 2 3 4 | <span class="token keyword">export</span> <span class="token keyword">function</span> <span class="token function">deleteRestaurant</span> <span class="token punctuation">(</span> restaurantId <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> firebase <span class="token punctuation">.</span> <span class="token function">database</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">collection</span> <span class="token punctuation">(</span> <span class="token string">'restaurant'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">doc</span> <span class="token punctuation">(</span> restaurantId <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token keyword">delete</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> |
In addition, firebase
also supports us with many features such as adding more than one record
a time using transactions
or batch
, realtime database
…. etc. Hopefully the above sharing will help everyone. See you in the next article.