Model Relational Data in Firestore NoSQL

  Рет қаралды 369,436

Fireship

Fireship

6 жыл бұрын

Learn how to model and structure data relationships with the Firestore NoSQL Database. We build simple one-to-many and many-to-many relationships by modeling a twitter-inspired app. angularfirebase.com/lessons/f...
- Firestore Structuring: firebase.google.com/docs/fire...
- NoSQL Document DB - en.wikipedia.org/wiki/Documen...

Пікірлер: 214
@Fireship
@Fireship 6 жыл бұрын
Oops, meant to say "no greater than 1MB" at 1:10 - I hope this gives you some ideas for basic relational modeling in Firestore, but there are more advanced techniques that I will cover in the future.
@wilfrodebodo
@wilfrodebodo 6 жыл бұрын
I’d love to see more techniques about data modelling. Keep up the good work :)
@y9tw0t
@y9tw0t 6 жыл бұрын
😂 "documents need to be at least 1MB or smaller" left me scratching my head Anyway, thanks for the content.
@HassanMalikTW
@HassanMalikTW 6 жыл бұрын
your technique of demonstrating possibilities is simply awesome, straight to the point, without diversions. well-rehearsed.. awesome ! :)
@peet91pop
@peet91pop 5 жыл бұрын
how to check the size of the document ?
@binhcoolfreestyles
@binhcoolfreestyles 5 жыл бұрын
​@@peet91pop I m not got the general content of this video, can I conclude it become 1 sentence "To create relationship in NoSQL, we can use both Normalize and Denormalize method?" Normalize is separate them to Collections, And Denormalize is use "Object Field"
@tarmac5482
@tarmac5482 3 жыл бұрын
This is perhaps the only channel where I watch in 1x and pause often.
@gamesland2067
@gamesland2067 3 жыл бұрын
That's funny because this video is the first video I watched in 1.75x
@sharbelokzan9673
@sharbelokzan9673 2 жыл бұрын
I was thinking the exact same thing lol I usually watch on X1.5 , or even faster in case I'm familiar with the subject But here on fireship no no no 😂 X1 speed and I need100% of my brain
@Beny123
@Beny123 2 жыл бұрын
Exactly . So dense with valuable information
@TheSUMMIE
@TheSUMMIE 2 жыл бұрын
@@gamesland2067 hey
@simonfeliperuavargas5134
@simonfeliperuavargas5134 4 жыл бұрын
I am a Spanish speaker and I appreciate your speech clarity and the knowledge of this channel. Thank you so much.
@domknguyen
@domknguyen 6 жыл бұрын
Hands-down best video series on Angular and Firebase! Keep up the Firestore videos! We'll definitely need it since it's still in beta.
@user72974
@user72974 5 жыл бұрын
For anyone watching this in Feb 2019 and following along, there is no more "object" field for the documents. It's now called "map".
@norbertocaceres6710
@norbertocaceres6710 5 жыл бұрын
you saint
@LuisSierra42
@LuisSierra42 5 жыл бұрын
Arigatou senpai
@pixeesoft
@pixeesoft 5 жыл бұрын
The hero we need, not the hero we deserve.
@casperknudsen7086
@casperknudsen7086 4 жыл бұрын
nice to know. Just started working with it :D
@FamilyGuyVids11
@FamilyGuyVids11 4 жыл бұрын
cheers!
@razakadam74
@razakadam74 6 жыл бұрын
Jeff, you make learning more fun for me. Thanks
@monome3038
@monome3038 6 жыл бұрын
of all modeling videos, this one is the best. Thank you so so much!
@michaelffasd23
@michaelffasd23 6 жыл бұрын
Great video Jeff, thank you! This was an excellent topic to cover. It confirmed what I already learned from talking to you in Slack, and gave me some extra insight.
@alexwilliams677
@alexwilliams677 6 жыл бұрын
Awesome videos man, simple and straight to the point! Keep it up
@mohamethseck
@mohamethseck 2 ай бұрын
6 years old and it still helped me plan out the structure for my project. Thank you!
@greggord-hume3979
@greggord-hume3979 2 жыл бұрын
Exactly the information I needed. The user -> tweets model is applicable to so many other applications.. like stores -> products. Which is how this helped me resolve my data structure. Thanks!
@davidakposibruke5444
@davidakposibruke5444 4 жыл бұрын
I just started working with databases and found firebase and your videos make understanding it so much easier and quicker. Great work!
@bienvenidovillabroza351
@bienvenidovillabroza351 3 жыл бұрын
Actually taught me NoSQL and Firestore at the same time. Amazing videos as usual.
@innerthreatcircus5651
@innerthreatcircus5651 6 ай бұрын
OMG, seeing this for the first time in my life to try to do something using flutterflow and firestore. Glad to finally see some noSQL stuff (I'm VERY SQL oriented for over 20 years using relational databases).
@sebbel3260
@sebbel3260 10 ай бұрын
Still useful today. Wow your videos have come far, and so has your voice!
@ArturoCamposConde
@ArturoCamposConde 5 жыл бұрын
Your content is super awesome! Maybe you could one day do a video on how to get data from firestore to datastudio, I bet it would be incredibly useful not only for me. Keep it like that.
@danielborges.
@danielborges. 6 жыл бұрын
Always a very good content by the way. Thanks for sharing. I am a very satisfied Pro Member and highly recommend it to all.
@Fireship
@Fireship 6 жыл бұрын
+ Daniel I'm very glad to hear that, thanks for sharing your feedback :)
@antoinederoose499
@antoinederoose499 3 жыл бұрын
That's a great introduction to the NoSQL mindset thanks you
@algoconqueror3579
@algoconqueror3579 Жыл бұрын
The best explaination on Data modeling in Firestore👏👏
@hangchen6131
@hangchen6131 6 жыл бұрын
Nice and helpful tutorial and hard to find one like this addressing data modeling specifically for firebase! But I have to watch at 0.5 speed to fully understand the content lol!
@Trinks
@Trinks 4 ай бұрын
Great explanation mate. Just what I needed.
@martinschulze5399
@martinschulze5399 3 жыл бұрын
I just watch your half of your videos because of the voice combined with the background jingle :P no joke, love them
@hiringcafe
@hiringcafe 3 жыл бұрын
Hands down the best KZbin channel for coding
@shoekneeawl
@shoekneeawl 5 жыл бұрын
Hey Jeff, great video. Why don't you use the 'reference' data type? for a user document rather than creating a new field?
@anazi
@anazi Жыл бұрын
Wow I just implemented this approach using exactly the same method for a similar situation. I had problem with Firebase9 since I couldnt nest the likes inside a document inside a post So I decided to do take the easier approach and I was hoping the I didnt ruin my project. But after I watched your suggested video I feel 100x more confident about it. Thanks alot ❤️❤️
@JanacMeena
@JanacMeena 2 жыл бұрын
Exactly what i needed, thank you. Realized that I should just go with a SQL db
@budiedev5820
@budiedev5820 5 жыл бұрын
finally i understand now how the noSQL work. thank for your awesome video.
@h.vats_
@h.vats_ 2 жыл бұрын
5:20 It is now possible to make queries across collections and subcollections with the same name using collection group queries.
@psaunder1975
@psaunder1975 5 жыл бұрын
I agree, one of better videos that explains how to apply relational techniques to Firebase. This is what SQL developers are looking for to come over to Firebase.
@cesarmurillo6192
@cesarmurillo6192 3 жыл бұрын
Exactly, that have prevented me from entering into firebase in the past till recently I gave it a try and this video summarizes all what I have read along the way and what I have implemented.
@CarlosAlbertoBrasil
@CarlosAlbertoBrasil 4 жыл бұрын
thanks, answered really well the question, how we solve complex situations in noSql .... by yourself !
@SarShaGaming
@SarShaGaming 5 жыл бұрын
Hey, What about lookup tables? How will you model those with firestore ?
@Pharaoh-99
@Pharaoh-99 5 жыл бұрын
how would you get all tweets along with up to date user data such as user name and age not just user id ... like joins in sql
@raghav4296
@raghav4296 5 жыл бұрын
G’day, a noob query: @7:00 - There was a mention to check if an user has hearted a post by checking whether the document exists for userid_tweetid. Doing this operation at scale, wouldn’t it easily consume lot of GET requests?Would it be a better alternative to write the hearted tweet id per user basis to Firestore and sync the same in realtime back to the client so that the client always have the list of tweets thus making the check locally than to reach the server?
@kyumamorita
@kyumamorita 5 жыл бұрын
easy to understand. good job!!
@tomasznowak2032
@tomasznowak2032 3 жыл бұрын
Damn... this channel is A+ class.
@codingkidda5173
@codingkidda5173 6 жыл бұрын
No one can beat you sir
@raghav4296
@raghav4296 5 жыл бұрын
Hi Jeff, for the trick mentioned in 7:20 - Does a firestore call to check if the user has liked a post need to be made for every tweet he views? Will this not exponentially increase the read costs?
@cheldap-softcheldap-soft900
@cheldap-softcheldap-soft900 6 жыл бұрын
whaou!!! wath a nice topic on a nice video, thanks
@yndrywjynsyn
@yndrywjynsyn 6 жыл бұрын
Hi, I'm new to coding. Are these videos good for people trying to build a firebase database in Swift?
@javadziaebrahimi3568
@javadziaebrahimi3568 5 жыл бұрын
awesome as always
@Leonardo_A1
@Leonardo_A1 8 ай бұрын
great Video .. Thanks from Germany Leonardo
@mateja176
@mateja176 6 жыл бұрын
Jeff, you are awesome!!!
@Fireship
@Fireship 6 жыл бұрын
+Mateja Thank you :)
@eduardorabanal2803
@eduardorabanal2803 5 жыл бұрын
awesome video bro, thank you very much
@mike73783
@mike73783 5 жыл бұрын
It would be helpful to see examples of typical queries. How would we get the tweets a specific user has liked? All of the tweets liked by that user? The tweets of user A that were liked by user B? I think I understand the concepts here but it hasn't quite clicked in my mind. Probably I just need to try some of these exercises myself.
@eduardodelagarza3318
@eduardodelagarza3318 5 жыл бұрын
Did collection group queries made the part about the tweets obsolete?
@RafaelSantos-pq4od
@RafaelSantos-pq4od 6 жыл бұрын
Eu estava com duvidas quanto a construção dos relacionamentos, foi de grande ajuda esse video. (I was in doubt as to the construction of the relationships, this video was very helpful.) - Follower of Brazil
@hooligansofts7430
@hooligansofts7430 5 жыл бұрын
Hey, one question tho. I understand why we normalized the structure so that we can query all the tweets in a single day if we want to. But what about if the user wants to see all of his tweets? Are we looking at some data duplication in this case?
@vOnez212
@vOnez212 5 жыл бұрын
I'm building an app with Angular and Firebase but would like to learn as much about Firebase (noSql) data modeling first. Any resources you can point me to. Thanks!
@yndrywjynsyn
@yndrywjynsyn 6 жыл бұрын
Hi, this was a nice intro video for me. Do you plan to make longer video tutorials on this Firebase topic?
@ismailmohamed6108
@ismailmohamed6108 5 жыл бұрын
at 7:10 .. Does that mean we will need to make a document id for each user with a specific tweet? that a huge data
@blasttrash
@blasttrash 4 жыл бұрын
episode 63? is this part of some series? if so where can I find the full series or playlist?
@jamesblock8384
@jamesblock8384 4 жыл бұрын
Check his channel. He offers a bunch of free videos on youtube. He also has some paid ones on his site at fireship.io I believe. There's also a stripe community you can join. His videos are by far the most useful I've found.
@ChilaKasonde
@ChilaKasonde 6 жыл бұрын
Not an Angular guy but i use Firestore often this is truly amazing thanks alot
@Fireship
@Fireship 6 жыл бұрын
Thank you! What do you use Firestore with?
@ChilaKasonde
@ChilaKasonde 6 жыл бұрын
Angular Firebase Android development in native Java, actually modeling my current database using some of the principles you've mentioned
@kethdominictacatani5837
@kethdominictacatani5837 6 ай бұрын
Bro you deserve a subscribe!
@tankki1583
@tankki1583 4 жыл бұрын
6:52 How do you get the user info from 'tweets' collection if there's no join? example output will be: USER ONE - 'User tweet this one.' , USER TWO - 'This is other tweet from this user'
@codewithluca
@codewithluca 5 жыл бұрын
Great explaination
@joshuapetitma6077
@joshuapetitma6077 3 жыл бұрын
3:34, you can now actually do this! Firebase is really growing and allows you to defined those queries.
@moomoomamoo
@moomoomamoo 5 жыл бұрын
7:16 will using a composite id of the User and Tweet lead to issues involving hotspotting? "Avoid high read or write rates to lexicographically close documents" - Firestore best practices doc. I'm currently in the process of implementing some backend logic that uses this idea, but I'm concerned that this idea won't work in the long run.
@caiomar
@caiomar 4 жыл бұрын
this guy is on speed
@ajaykotiyal427
@ajaykotiyal427 4 жыл бұрын
Exactly, I was commenting on this. He is too fast. Although tutorial is good.
@StephenRayner
@StephenRayner 3 жыл бұрын
The speed is great!
@caiomar
@caiomar 3 жыл бұрын
@@StephenRayner ok
@mountainslopes
@mountainslopes 3 жыл бұрын
@@ajaykotiyal427 just slow it down in the KZbin player!
@jesseb0rn51
@jesseb0rn51 3 жыл бұрын
Its called adhd
@inescherif5385
@inescherif5385 Жыл бұрын
thank u it helps me a lot
@Donaldo
@Donaldo 5 жыл бұрын
Early in the video OP showed creating a document with userId and instructorId properties and claimed this was many-to-many. That's not mtm it's just two foreign key references from the same document to two documents in presumably the same collection. Maybe what OP meant to do was make the userId property and array of userId? Does firebase support multiple indexable values for a single field like elasticsearch?
@bstrnx
@bstrnx 6 жыл бұрын
How do you model the data if you want to show only the tweets tweeted by users you follow?
@eminisrafil
@eminisrafil 6 жыл бұрын
Thank you keep it up! Any hints on when geofiltering will be available? :)
@Fireship
@Fireship 6 жыл бұрын
I don't know, but I hope to see geo query support soon. You can expect a video as soon as it becomes available.
@NikosKatsikanis
@NikosKatsikanis 4 жыл бұрын
Does it work the same way in Datastore in google cloud?
@ollerandres
@ollerandres 6 жыл бұрын
Hi Jeff, wondering if it is better using userId as the "Document ID" for "tweets" and any other collection related to the user. This way you can use: /user/{userId} to show user information /tweets/{userId} to list every users' tweets /following/{userId} to list every followed user /followed/{userId} to list every user following the user
@edmundo096
@edmundo096 5 жыл бұрын
I don't think so. This *may* be more appropriate to be applied on a server endpoint than on firebase. I have little to no experience here but it feels better to use the /model/{modelId} most if not all the times so you can always retrieve unique documents.
@tristanheilman3967
@tristanheilman3967 4 жыл бұрын
At 6:12 it is stated that we can return tweets by multiple users and then at 6:20 it is stated that we can also scope a query to a specific user. My question is... is it possible to scope the query to multiple users (a friend list), lets say an array or user ID's?
@tyleradleta9321
@tyleradleta9321 4 жыл бұрын
I am also curious
@whatthefunction9140
@whatthefunction9140 3 жыл бұрын
Does the size of my db change the response time? Or has Google abstracted it enough to not make a difference?
@kamalkamals
@kamalkamals 6 жыл бұрын
I remember we use this technique with Firebase Realtime Database before Firestore and i can't see any news except modification on query code, any way thank you a lot for your tutorials.
@Fireship
@Fireship 6 жыл бұрын
The query methods are a big improvement + it gives you the flexibility for shallow queries when nesting. Thanks for the feedback :)
@kenjihikmatullah1060
@kenjihikmatullah1060 4 жыл бұрын
Nice explanation
@nxone9903
@nxone9903 2 жыл бұрын
NoSQL feels so primitive compared to relational dbs. I quite like its simplicity but do feel uneasy by the lack of relations
@gamingfirst0tv
@gamingfirst0tv 5 жыл бұрын
Do you know of any technique to reduce the number of document reads when querying a collection of posts? currently working on an app and it seems wasteful that just strolling through a paginated profile of a user can cause upwards of 100 reads when you have many posts.
@zakariaarrim5493
@zakariaarrim5493 3 жыл бұрын
Thank you so much bro I was lost
@farishmd2241
@farishmd2241 Жыл бұрын
I am so surprised that this is the same way that i was thinkink to use firestore database😁
@Neerajkumar-xl9kx
@Neerajkumar-xl9kx Жыл бұрын
Wow loved it
@avinashmphp
@avinashmphp 6 жыл бұрын
Great tutorial! Can you please post a tutorial for 2 cascade dropdown list with array object thank you very much
@elvisfernandes4157
@elvisfernandes4157 6 жыл бұрын
I thought you'd demonstrate the use of 'reference' field type... any thoughts on that? Keep up the great work! :)
@cucco1
@cucco1 6 жыл бұрын
My thoughts exactly.
@lilililliilil
@lilililliilil 6 жыл бұрын
Is there any ways to check the size of the document?
@Manish-fm5iv
@Manish-fm5iv 6 жыл бұрын
So how would you get a list of tweets a user hearted?
@SquishySwishy
@SquishySwishy 4 жыл бұрын
Query through the 'hearts' document where userID == desiredUser
@qazyhn94
@qazyhn94 5 жыл бұрын
great video
@JoeTechster
@JoeTechster 3 ай бұрын
Amazing!!
@drisscriss6479
@drisscriss6479 Жыл бұрын
Is you??😳 5 yrs back ur voice 🤐🔥❤️
@codinginflow
@codinginflow 6 жыл бұрын
KZbin recommends me this video while I am working on a Firestore implementation in Android. I wonder if they can view my PC.
@TheEnde124
@TheEnde124 4 жыл бұрын
Yes, yes they can
@codinginflow
@codinginflow 4 жыл бұрын
@Wafi Hartono Yes, it's me
@SunsetRacer
@SunsetRacer 6 жыл бұрын
Very good job explaining this. but one thing for sure it doesn't need to be in 9 mins
@ray-lee
@ray-lee 3 жыл бұрын
does this create lot of document read and the cost will be pricey
@chicagoboy279
@chicagoboy279 5 жыл бұрын
I dont get, that wont scale if you assign ID manually
@HaiNguyen-cf1ji
@HaiNguyen-cf1ji 5 жыл бұрын
Can firebase auto generate object id (let say userID) for me, or i have to type it down manually. I know that firebase can create the key ID but how can i get that ID and put it in other object?
@user72974
@user72974 5 жыл бұрын
If it doesn't, you have access to free libraries in all popular programming languages to generate UUIDs. Your client, whether that's a web browser or server, can create the UUID and include it as the new document's ID as it creates the document in Firestore. Example: www.npmjs.com/package/uuid
@shiftEscape
@shiftEscape 6 жыл бұрын
Great video! Keep it up! :)
@Fireship
@Fireship 6 жыл бұрын
+Alvin Will do, thank you!
@Luggruff
@Luggruff Жыл бұрын
So, if I am creating a quiz app, and I in the end want to query what the average score of ALL users are, I basically have to have my questions as a root document, and add users ID's to each questions answer as an array? I.e. Question 1 > Option A > User 1, User 2, User 3. Then Question 1 > Option B > User 4, User 10, User 101. Then Question 2 > Option C > User 1, User 3, User 101. Or am I missing the point here? Really struggling with how to design a database where I can store users answers to the questions, but not only that, storing which question each user bookmarked for later review, and also make it possible for users to see statistics per chapter, counts of bookmarks per chapter/total questions, correct answers per chapter/total questions etc.
@muhdzulfadhlee
@muhdzulfadhlee 5 жыл бұрын
const ref = db.collection('assign'); ref.where( 'email', '==', user.email ) How to compare assign.email and user.email in this case ? I want user.email to become a variable that changes from user to user that will display only the email that match.
@rachitkumarsingh3228
@rachitkumarsingh3228 Жыл бұрын
new to firebase..... dose it increase read and write count...or increase billing
@RumakInaph
@RumakInaph 6 жыл бұрын
What if a user changes profile pic, so when loading the tweets, for each tweet we have to make a query to the user collection to get the profile pic? If I am pulling 50 tweets, I will potentially make 50 additional queries to fetch users later username and profile pic with the current Firestore limitations. Any efficient way of achieving this?
@Fireship
@Fireship 6 жыл бұрын
Yes, save the current profile pic with a static predictible path like "/avatars/userxyz/avatar.png". That way you can override the file source and its still updated everywhere.
@RumakInaph
@RumakInaph 6 жыл бұрын
good idea, I can just store the image with the same name on may be cloud storage... for fetching the latest name and username, we should still query 50 times right? this will be an issue with any kind of social networking apps where historical data is shown and a user can change their name/username.
@mohamedyoussef8835
@mohamedyoussef8835 Жыл бұрын
Awesome video +++++++++++++ 😃
@raisshaikh259
@raisshaikh259 6 жыл бұрын
amazing
@muhammadafzal237
@muhammadafzal237 2 жыл бұрын
I am working on a project where videos will be displayed and users will be able to comment on videos. How will be the relational database for it on firestore.
@raphaelabadie2518
@raphaelabadie2518 4 жыл бұрын
@Fireship why not putting hearts collections under each user ? With and object {tweetId1 : true, tweetId558: true}. I would kindly like to know if this can cause issue or not ? Because liked tweets are linked to the users, so creating a collections under users/${userId} make sense no ? Instead of having it outside create the need to link it. And has you said even if the collections is big it's not a problem (if the user like tons of tweets should not be an issue). Cloud functions triggered where like or unlike will work the same for total count.
@akshattamrakar9071
@akshattamrakar9071 5 жыл бұрын
At 8:03 you said "at episode 63" which video is it
@LV-md6lb
@LV-md6lb 5 жыл бұрын
No offense but it seems like you are not even interested as he's showing a browser screen with a clear URL address that links to the episode in question: angularfirebase.com/lessons/firestore-cloud-functions-data-aggregation/
@SachalChandio
@SachalChandio 2 жыл бұрын
you are awesome
@mattanderson2840
@mattanderson2840 2 жыл бұрын
Can someone link me the video that is episode 63 that is referenced please :)
@SampathLokuge
@SampathLokuge 6 жыл бұрын
Hi, I just purchased Pro membership. But I cannot see member login section on your site? But I can access Pro member content. Could you tell me how that happened?
@Fireship
@Fireship 6 жыл бұрын
Yes, you can find the link to manage your tinypass account at angularfirebase.com/dashboard - sorry, it's a weird setup currently
@SampathLokuge
@SampathLokuge 6 жыл бұрын
Yes, I saw that. Could you explain how that site's login gives me the permission to use "angularfirebase.com"?
@Fireship
@Fireship 6 жыл бұрын
After authenticating it allows restricted content to be accessed with limits or locks.
@Fireship
@Fireship 6 жыл бұрын
Let's chat on Slack if you're interested in talking code :)
@SampathLokuge
@SampathLokuge 6 жыл бұрын
Hmm... Yes, Sure thing :) Thanks for nice and most wanted video series for me.
@SiddharthRay1
@SiddharthRay1 6 жыл бұрын
I am not getting how to reach out to you on slack
@TheGrafox
@TheGrafox 6 жыл бұрын
Thanks ... Most cases is shopping cart ... Can you make structure and queries for that in the future ... Thanks again
@Fireship
@Fireship 6 жыл бұрын
Yes, I have a shopping cart structure planned for a pro video in a few days on angularfirebase.com
100+ Linux Things you Need to Know
12:23
Fireship
Рет қаралды 338 М.
Became invisible for one day!  #funny #wednesday #memes
00:25
Watch Me
Рет қаралды 48 МЛН
Did you believe it was real? #tiktok
00:25
Анастасия Тарасова
Рет қаралды 43 МЛН
ИРИНА КАЙРАТОВНА - АЙДАХАР (БЕКА) [MV]
02:51
ГОСТ ENTERTAINMENT
Рет қаралды 11 МЛН
Firebase - Back to the Basics
25:23
Fireship
Рет қаралды 582 М.
How do NoSQL databases work? Simply Explained!
7:38
Simply Explained
Рет қаралды 1 МЛН
10 regrets of experienced programmers
8:16
Fireship
Рет қаралды 1,1 МЛН
Firebase has SQL: Introducing Data Connect
16:29
Firebase
Рет қаралды 57 М.
I tried 5 Firebase alternatives
10:31
Fireship
Рет қаралды 763 М.
Which Is Better? SQL vs NoSQL
9:43
Web Dev Simplified
Рет қаралды 281 М.
Cloud Firestore Data Modeling (Google I/O'19)
40:37
Firebase
Рет қаралды 171 М.
Хотела заскамить на Айфон!😱📱(@gertieinar)
0:21
Взрывная История
Рет қаралды 5 МЛН
Blue Mobile 📲 Best For Long Audio Call 📞 💙
0:41
Tech Official
Рет қаралды 1 МЛН
Simple maintenance. #leddisplay #ledscreen #ledwall #ledmodule #ledinstallation
0:19
LED Screen Factory-EagerLED
Рет қаралды 23 МЛН