Learn to Code via Tutorials on Repl.it!

← Back to all posts
Repl.it DB
Coder100

Example test run for repl.it db
Working Form

Turn on explorer mode to use it!

Repl.it DB

Hello everyone! Repl.it just announced a new way to host your databases. They have created their own database type. It's unlike any other SQL/noSQL database: It is JSON based!!!

Links

Test run
Client code
NPM package
Github Code
Working "What do you think of node.js?" REPL

Node.js TUTORIAL

So, with help from @masfrost, I have created an npm package for it! It contains the native curl functions, and includes more (like emptying database, setting automatic types for values and more!) Also along the way, I learned testing with jest...
Also, I got the hacker plan!

Without further ado, here are the docs!

1) Click on the floppy disk:

This is the homepage for your database. You can view storage usage and amount of keys.

2) Click on the box icon:

Install replitdb-client.

3) Copy and paste this code into the editor (if all you want is a minimalistic template).

4) Now, you are ready to set some commands! Inside the async function, you can do some methods. For our tutorial, we will make a what do you think of the node.js engine survey.

Some quick docs

Setting data

getting data

you can leave out the raw part, but if you set raw to false, you will either get an object, or an error (the data wasn't valid json)
listing keys

getting all data as an object

delete data

delete all data

Easy, right?

5) Prompt

Add this to your code:

This just gets our form ready. Remember the async because we are using await calls here.

6) Save to database

Quite easy. We just refer to our set method in the docs.

7) Get all data

Now, we can use client.getAll to accomplish this!

8) Parse the data

Right now our data is just an object, let's make it human-readable!

9) And that's it! We have gone through almost all of what you will be using for a database (with delete as an exception). I can't wait to see what you will make with the client!

Also, here's the working code for you to hack ;)

Homework

  • Make it so if the user entered a name that is already in the database, don't save to the database. (hint: db.get)
  • Add colors!!
  • Get a specific user's entry

Have a great day!

Ask in the comments below if you have any questions ;)

Voters
OLEGTELENKOV
AngusInfinity
OldWizard209
NoobieZr
Spotandjake
Wilke000
IuseArchBTW
SilvermoonCat
programmeruser
chillcafe
Comments
hotnewtop
ironblockhd

Omg, thats so cool! Now i finally can use a database that doesnt reset!

ironblockhd

I made a wrapper for your wrapper haha

ironblockhd

implemented in ironMedia now, ill give you credits of corse

Coder100

nice!!! @ironblockhd

VulcanWM

can i use this in a js file in a html repl?

Coder100
helloyanis

I have a few questions, and i am kinda new so sorry if that's dumb questions but...


  1. What type of data can you store in your database? I know you can do it with strings, but can you do it with integers, floats or booleans?

  1. The line to import the database in your example is :

However the line to import the database that repl gives me is :

Does that mean that some stuff from the code is outdated? Or does your example still work?


  1. Can you create multiple databases in a single repl? I am trying to code a game in a discord bot that would remember both the gold the user has and the experience points won. I tried something like

Would it be possible to manipulate both databases like that?


  1. [SOLVED] I don't know why but a lot of times the operations with the database are done out of order. For example, i have this program that's supposed to delete the database then add 2 values/keys and once it does so it logs them in the console :

However, when I run it, the logs changes on every run, and I get sometimes this log :

Sometimes I get...

And it changes exery time. What is the cause of that and how can I fix it? (Here is the repl's link : https://repl.it/@helloyanis/testdb#index.js )
Nevermind I solved it, jut had to add

after the line of code that clears the database. The link has the fixed code if someone wants it

Coder100
  1. Any JSON serializable object.
  2. It only differs by name, this is an older tutorial, after replit adapted by library they must have changed how you defined things to be slightly more precise. There haven't been any breaking changes yet so it should be correct.
  3. psst don't do that one db client is good, but you can have multiple. It might cause some data races
    @helloyanis
helloyanis

@Coder100 Thank you for your reply!!

Coder100

np!
did it help? @helloyanis

helloyanis

@Coder100 Yeah thank you!

triplemilkshake

@helloyanis dude you seriously read my mind. im making a discord bot too, and i was using json files before, now i want to change to replit's database.

Coder100
programmeruser

Technically Repl.it DB is NoSQL.

Coder100

no, it's a key value database through and through.
After all, there is no 'collection' nor 'document', but you could align your db that way @programmeruser

[deleted]

Why am I still asking questions about this?
This has stumped me for a long, long time
How does the code know that the user is the same as name? And for the data[user], how does it know that that is ans??? (In this chunk of code):

Coder100
Coder100

error undefined variable name and ans @CarlosRosiles

Kookiez

I can't see the floppy disk even tho I'm in explorer mode...

matthewproskils

Hey, @coder100, i have found a problem with the delete function. If you delete an item, traces will still be left : result for getall is

Coder100

ah yes, I'll ask fluffin about that @matthewproskils

matthewproskils

@Coder100 k.thanks

matthewproskils

@coder100 i realized that if u search for an item now (using GET), if it is not there, then it will return NULL instead of UNDEFINED

Coder100

yes, of course. Is there a problem? @matthewproskils

matthewproskils

@Coder100 Oh, sorry maybe i should've bolded instead of uppercased

Coder100

yeah, but what's the problem
null is explicit undefined
undefined is well, undefined. @matthewproskils

rediar

I cant figure out what client.get returns

ironblockhd

@Coder100 just a warning, use encode/decodeURIComponent for your next project with your database, i just found out why mine broke like once a week

Coder100

hi hmmm idk maybe I should just make it happen by default lol @ironblockhd

cherryblossom00

Would you mind changing the implementation of getAll and setAll so it is more efficient? Currently, it waits for the fetching/setting the value for each key before continuning with the next key:

This could be improved by using something like this:

Coder100

Hello. Thanks for your suggestion! Currently, I'm doing it this way is because of concerns about what the API can handle and not handle. Promise.all executes them all at the same time, while the await method will do it one-by-one. A bit slower, but until sid gets back,
this will be the implementation for now. @cherryblossom00

HahaYes

wat no sql....
First actual...

HAHAYES

Coder100
AmazingMech2418

Nice, though, how do you get the floppy disk button?

Coder100

Turn on explorer mode @AmazingMech2418

HahaYes

Oh no, coder100 is trying to topple my domain. Oh no must be better

Coder100
HahaYes

@Coder100 Hehe I rule the memes therefore I rule REPL

Bookie0

wait you keep repeating that... what memes do you rule? @HahaYes

Coder100

oh he rules the tutorial section apparently @Bookie0

HahaYes

@Bookie0 I RULE THE MEMES

Bookie0

um ok lol @Coder100

Bookie0

um ok lol @HahaYes

firefish

@coder100 Ignore the bottom; I got bored

Coder100
firefish

Ah... couldn't find any documentation when I discovered it 24 hours ao yesterday morning

Coder100
firefish

@Coder100 That's one day old. A more up-to-date version would be 56 hours ago.

Coder100
firefish

@Coder100 57 hours.

DynamicSquid

what's the data base

Coder100

what do you mean @DynamicSquid

DynamicSquid

@Coder100
Oh i meant to say what is a data base. Like:

Hello everyone! Repl.it just announced a new way to host your databases. They have created their own database type. It's unlike any other SQL/noSQL database: It is JSON based!!!

like what are they referring to when they say database

firefish

@DynamicSquid Read the rest man

TheForArkLD

noice!

Coder100

thanks! @TheForArkLD

TheForArkLD

@Coder100 btw
repl.it db is for collect other programmers info?
btw
can we do Stekovaya?

Coder100

hello, repl.it db is to have persistent key/value data @TheForArkLD

TheForArkLD

@Coder100 can not invited user set data?

TheForArkLD

@Coder100 ( from program )

TheForArkLD

@Coder100 btwwwwwww can we do stekovaya?

firefish

@TheForArkLD If he doesn't he doesn't. And?

firefish

@TheForArkLD Yes, but it has to be stored in JSON. You key/value pairs only.

TheForArkLD
firefish

@TheForArkLD Erm... what did you say OK to?

firefish
TheForArkLD
HahaYes

noice

Coder100

thanks! @HahaYes

RohilPatel

why the mrlapiz GitHub lol?

Coder100

um because that was the connected acc on desktop @RohilPatel

randomlylelo

Nice!

Coder100

Thanks! @randomlylelo

Highwayman

👌

Coder100
Highwayman
Coder100
Highwayman
JDOG787

nice :P

Coder100

thanks! lol @JDOG787

JDOG787