npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

databased

v1.0.7

Published

An open source database library that runs on your own server.

Downloads

9

Readme

Welcome to DataBASED!

DataBASED is a free, open source database library for Node.js packaged with NPM. It simplifies databases for any small project that doesn't need a more scalable solution. All you have to do is install it (npm install databased) and use the provided commands to set up your database within your own Node server. No API keys, no websites, and it's all free. The only drawback is that it is not scalable to large projects that have a lot of documents within the collections. It will be very slow if you have more than, say, 10,000 documents within a single collection. This is because the indexing system that I implemented is primitive, it still requires iteration to a decent extent, but it is better than nothing. I may or may not continue work on this project, but if I do, here are the things I will improve/change:

  • Make it scalable (basically requires a full re-do) OR just make it more scalable, by improving the indexing system
  • Make an API for easy front end use without any backend (similar to Firestore client side SDK)

Basically, this database is aimed at small projects such as a blog website where you might want to upload some content yourself, but others will not need to post. Or maybe a project where you need to store some information only for a short period of time and then delete it, such as a shopping cart or a contact form.

If you'd like to donate to support development of DataBASED, you can do so by any of the following methods:

  • Paypal: https://www.paypal.com/paypalme/trevolt1
  • Cashapp: $karstenkoer

ANNOUNCEMENTS

There are none!

1.0.4 CHANGE-LOG

  • Fixed index overwriting bug

Documentation:

Setup

To create your first database, go to the terminal and use this command: npx create-database {database_name}

Then, you can create your first collection within that database using this command: npx create-collection {new_collection_name} {database_name}

A new folder called "databased" will be added to your project's root directory. Do not delete or move it. You can create as many databases, collections, and documents as you need.

If you want to backup your database, you can use 'npx backup-database {db_name}'. Just make sure to set the 'backup_path' value in './databased/settings.json' to your desired directory for backups.

Functions

Query()

The query() function takes 4 arguments: databaseName, collectionName, condition, and limit. All are required except limit.

All main functions (excluding parameter functions, e.g. limit()) are asynchronous, including query().

Example: const query = await query('db1', 'col1', where('Test1', '==', 'test1'), limit(5))

Limit()

The limit() function takes 1 argument of type number. It simply returns the number, you can also just put the number directly into the main function if readability is not a priority.

Where()

The where() function takes 3 arguments: property, operator, and value. The property argument should be the key of the field you are targeting within a document. The operator argument should be a comparison operator such as: '==', '>', '<', '<=', or '>='. The value argument should be the value of the field you want to check.

The function simply returns an object like this: { property: propertyArg, operator: operatorArg, value: valueArg }. Similar to the limit() function, you can just place an object straight into the main function if readability is not a priority.

getDoc()

The getDoc() function takes 3 arguments: databaseName, collectionName, and documentName. It always returns an object with the exists() method, but only returns the data() method if the document exists. The getDoc().exists() method will return either true or false depending on if the document was found in the collection specified. The getDoc().data() method will return the document.

setDoc()

The setDoc() function takes 4 arguments: databaseName, collectionName, documentName, and documentObject. It will either create a new document or overwrite an existing document depending on if one with the name specified already exists in the collection. The documentObject object should be an object with whatever fields you want to insert.

WARNING: setDoc() will not automatically fill in the fields that you leave out when overwriting a pre-existing document, it will simply overwrite it with the new data.

updateDoc()

The updateDoc() function takes 4 arguments, it is the same as the setDoc() function except it will only overwrite the fields you change. You can simply pass in an object that only contains one field, and the rest of the document will remain the same besides that one field, which will either be changed or added depending on if it existed prior to calling updateDoc().

deleteDoc()

The deleteDoc() function takes 3 arguments: databaseName, collectionName, and documentName. As the name suggests, it simply deletes the document if it exists in the collection specified. If there is no document found, it throws an error.

getCollection()

The getCollection() function takes 3 arguments: databaseName, collectionName, and limit (optional). It will return all the documents within the specified collection, unless you use limit() to set the max amount of documents.