Xin chào mọi người, hôm nay mình sẽ chia sẻ về cách
read
,write
vàdelete
data trongfirebase
. Bài viết này chỉ dành cho người mới đầu thôi nhé, những bạn nào master rồi thì xin góp ý giúp mình.
Để dễ hiểu mình xin lấy một ví dụ cụ thể nhé. Bài viết này sẽ giúp chúng ta lấy danh sách các quán ăn ở Đà Nẵng, sau đó mình sẽ thêm, cập nhật và xoá một quán ăn nào đó nhé. Quán ăn gồm những thông tin như sau: tên quán, địa chỉ, số điện thoại và phân loại ( ví dụ như quán bán trà sữa, bán hải sải, bán thịt nướng…..).
Okay, mình bắt đầu thôi nào!
1. Get a database reference
Để read
hoặc write
dữ liệu từ database
, trước tiên mình cần tham chiếu đến firebase database
như sau:
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
Mình có cấu trúc database
như này nhé:
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> |
Đọc records có trong 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
trên nó chưa trả về cho mình array
có cấu trúc như này đâu nhé:
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> |
Các bạn có thể viết riêng một function
như dưới để có thể import
vào và dùng thôi:
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, mình chỉnh lại hàm get
restaurant như sau:
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> |
Thêm, cập nhật một record
Bây giờ muốn thêm một record
thì chúng ta sử dụng add()
của firebase
:
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> |
Khi cập nhật record
chúng ta sẽ truyền vào data và id
của record cần update
và sử dụng 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> |
Xoá một record
Để xoá đơn giản chúng ta chỉ cần dùng detete()
và nhớ truyền id của record
cần xoá vào nhé.
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> |
Ngoài ra firebase
còn hỗ trợ chúng ta khá nhiều tính năng như thêm một lần nhiều record
sử dụng transactions
hoặc batch
, realtime database
….vv. Hy vọng những chia sẻ trên sẽ giúp ích cho mọi người. Hẹn mọi người ở bài viết tiếp theo nhé.