All Projects → CesiumLabs → quickmongo

CesiumLabs / quickmongo

Licence: MIT license
Quick mongodb wrapper for beginners that provides key-value based interface.

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to quickmongo

Immortaldb
🔩 A relentless key-value store for the browser.
Stars: ✭ 2,962 (+3957.53%)
Mutual labels:  key-value, key-value-database
Snippet2
A simple Code Snippet with user account and share feature
Stars: ✭ 20 (-72.6%)
Mutual labels:  mongoose
typijs
The Angular CMS Framework for building fully-featured SPA sites powered by NodeJS and MongoDB with TypeScript
Stars: ✭ 141 (+93.15%)
Mutual labels:  mongoose
angular-chat
Angular v.9, Node.js, Nest.js v.6, Mongoose, Socket.io, Passport, Angular Universal SSR (in progress...)
Stars: ✭ 35 (-52.05%)
Mutual labels:  mongoose
react-keyevent
An easy-to-use keyboard event react component, Package size less than 3kb
Stars: ✭ 38 (-47.95%)
Mutual labels:  key-value
Phantom
A mimic website of Pinterest where one can share ideas , socialize and find inspirational ideas
Stars: ✭ 18 (-75.34%)
Mutual labels:  mongoose
dxram
A distributed in-memory key-value storage for billions of small objects.
Stars: ✭ 25 (-65.75%)
Mutual labels:  key-value-database
MERN-JWT-AND-ROLE-AUTH
Neccessary features needed for your mern Application are now available.
Stars: ✭ 30 (-58.9%)
Mutual labels:  mongoose
mongoose-keywords
Mongoose plugin that generates a keywords path combining other paths values
Stars: ✭ 23 (-68.49%)
Mutual labels:  mongoose
Natours
An awesome tour booking web app written in NodeJS, Express, MongoDB 🗽
Stars: ✭ 94 (+28.77%)
Mutual labels:  mongoose
mongoose-pii
A Mongoose plugin that lets you transparently cipher stored PII and use securely-hashed passwords
Stars: ✭ 43 (-41.1%)
Mutual labels:  mongoose
mikaela
Mikaela is a discord music bot that gives users the ability to store their favorite songs, and create playlists on discord.
Stars: ✭ 19 (-73.97%)
Mutual labels:  mongoose
nodeJS examples
Server, routing, db examples using NodeJS v6
Stars: ✭ 34 (-53.42%)
Mutual labels:  mongoose
keyval-resource
a resource that passes key values between jobs
Stars: ✭ 39 (-46.58%)
Mutual labels:  key-value
mongoose-schema-reference-sample
Shows the usage of mongoose Schema referencing
Stars: ✭ 48 (-34.25%)
Mutual labels:  mongoose
search-cities
No description or website provided.
Stars: ✭ 11 (-84.93%)
Mutual labels:  mongoose
Auth-using-Vuejs-express-jwt-nodejs
Login and signup form and authentication using Vue.js, express, mongodb, JWT and bootstrap-vue
Stars: ✭ 17 (-76.71%)
Mutual labels:  mongoose
zuly
🤖 | Hi, I'm zuly, a brazilian bot! Focused on animes!
Stars: ✭ 45 (-38.36%)
Mutual labels:  mongoose
sinon-mongoose
Extend Sinon stubs for Mongoose methods to test chained methods easily
Stars: ✭ 87 (+19.18%)
Mutual labels:  mongoose
NodeScalableArchitecture
A Scalable Node Architecture/Server. This repository contains a complete implementation of writing scalable nodejs server/architecture on my medium blog.
Stars: ✭ 62 (-15.07%)
Mutual labels:  mongoose

QuickMongo Logo

QuickMongo is a beginner-friendly and feature-rich wrapper for MongoDB that allows you to use Quick.db's Key-Value based syntax.

Installing

$ npm install --save quickmongo

OR
$ yarn add quickmongo

Documentation

https://quickmongo.js.org

Features

  • Beginner friendly
  • Asynchronous
  • Dot notation support
  • Key-Value like interface
  • Easy to use
  • TTL (temporary storage) supported
  • Provides quick.db compatible API
  • MongoDriver for quick.db

Example

QuickMongo

import { Database } from "quickmongo";

const db = new Database("mongodb://localhost:27017/quickmongo");

db.on("ready", () => {
    console.log("Connected to the database");
    doStuff();
});

// top-level awaits
await db.connect(); 

async function doStuff() {
    // Setting an object in the database:
    await db.set("userInfo", { difficulty: "Easy" });
    // -> { difficulty: 'Easy' }

    // Pushing an element to an array (that doesn't exist yet) in an object:
    await db.push("userInfo.items", "Sword");
    // -> { difficulty: 'Easy', items: ['Sword'] }

    // Adding to a number (that doesn't exist yet) in an object:
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }

    // Repeating previous examples:
    await db.push("userInfo.items", "Watch");
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }

    // Fetching individual properties
    await db.get("userInfo.balance"); // -> 1000
    await db.get("userInfo.items"); // -> ['Sword', 'Watch']

    // remove item
    await db.pull("userInfo.items", "Sword");
    // -> { difficulty: 'Easy', items: ['Watch'], balance: 1000 }

    // set the data and automatically delete it after 1 minute
    await db.set("foo", "bar", 60); // 60 seconds = 1 minute

    // fetch the temporary data after a minute
    setTimeout(async () => {
        await db.get("foo"); // null
    }, 60_000);
}

Usage with quick.db

const { QuickDB } = require("quick.db");
// get mongo driver
const { MongoDriver } = require("quickmongo");
const driver = new MongoDriver("mongodb://localhost/quickdb");

driver.connect().then(() => {
    console.log(`Connected to the database!`);
    init();
});

async function init() {
    // use quickdb with mongo driver
    // make sure this part runs after connecting to mongodb
    const db = new QuickDB({ driver });

    // self calling async function just to get async
    // Setting an object in the database:
    console.log(await db.set("userInfo", { difficulty: "Easy" }));
    // -> { difficulty: 'Easy' }

    // Getting an object from the database:
    console.log(await db.get("userInfo"));
    // -> { difficulty: 'Easy' }

    // Getting an object property from the database:
    console.log(await db.get("userInfo.difficulty"));
    // -> 'Easy'

    // Pushing an element to an array (that doesn't exist yet) in an object:
    console.log(await db.push("userInfo.items", "Sword"));
    // -> { difficulty: 'Easy', items: ['Sword'] }

    // Adding to a number (that doesn't exist yet) in an object:
    console.log(await db.add("userInfo.balance", 500));
    // -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }

    // Repeating previous examples:
    console.log(await db.push("userInfo.items", "Watch"));
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
    console.log(await db.add("userInfo.balance", 500));
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }

    // Fetching individual properties
    console.log(await db.get("userInfo.balance")); // -> 1000
    console.log(await db.get("userInfo.items")); // ['Sword', 'Watch']

    // disconnect from the database
    await driver.close();
}

Maintained by Plexi Development

Discord Support

Plexi Development

Acquired from Archaeopteryx on 10/02/2022

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].