node-mongodb-native or Mongoose - node.js

We are going to develop an application that will work with MongoDB. The users of the application will create custom entities with the help of the GUI so we don't have any predefined entities while developing the application. Should we go with mongodb-native or use Mongoose?
Thanks.

If you don't plan on using predefined entities or "schema" don't use Mongoose.
I suggest using a wrapper around the native driver, such as https://github.com/kissjs/node-mongoskin , it does everything the native driver is doing, but much simpler.

Related

Other nosql database than mongodb with mongoose?

I would like to use another platform than mongodb with mongoose.
I used mongoose in my school project, and my school ask me to have a multiple database project.
Any idea ? I don't want to duplicate my code..
Thanks
Mongoose is MongoDB-specific as the website says:
elegant mongodb object modeling for node.js
so it's not possible to use it with another NoSQL tool.
CosmosDB from Azure is compatible with Mongoose and I have used this setup.
TingoDB claims to be compatible too using an additional driver called Tingus.
NeDB claims "its API is a subset of the MongoDB API" so there may be some compatibility with Mongoose too.
There may be other projects out there.

How to build models (ODM) in nodejs to use with nedb

I am looking for a ODM module that can be used with Nedb in NodeJs-Express. Is it somehow possible to use Mongoose or Waterline schemas in combination with nedb for validation? Mongoose and Waterline do not provide an official adapter for nedb.
At the moment have very low requirements for performance and i am working on a project for the raspberry pi therefore i would like to stick with nedb (or similar file-based nosql database).
Camo is an ODM for nedb and MongoDB, on Node.js.
I haven't been able to try it, but there is an adapter for Nedb for waterline that looks like it is dependent from building a Sails application.
It's available at: https://github.com/adityamukho/sails-nedb
EDIT: Sorry, I was incorrect, I was assuming this would work without sails, but I think this blog from the creator might prove that wrong

Why we use ORM or ODM to manage any graphDB?

Hey everyone I am working on nodeJS app. I searched some modules to manage my database (orientdb).
My question is: Why we use any ORM or ODM (or why is it recommenced), because there is a module which can provide many functions to manage DB.
I am still confused what should I use orientorm (https://github.com/mav-im/orientorm) or oriento (https://github.com/codemix/oriento)
Thank in advance..
Depending on the goal and depending on the ORM, ORMs have the advantage of adding support for:
schemas / models / collections: this makes it easier to create all classes/properties and, in some cases, migrations;
validations: make it easier to verify what gets saved in the DB.
All OrientDB ORM's I've seen for node.js expose Oriento, so that makes it easy to access the underlying oriento methods for doing more complex stuff.
Having said all this I recommend you try the waterline ORM with waterline-orientdb adapter. Waterline is an adapter based ORM with support for multiple databases (including support for associations between databases). Waterline-orientdb is the adapter for OrientDB which is based on Oriento. If at any point you need to use Oriento you can call .getDB() to access Oriento's instance.
Oriento is much more mature and supported. I suggest you to go with it.

CRUD operations with Node.js and MongoDB

What is the optimal way to perform CRUD operations when using Node.js with MongoDB. Can I reuse the same queries that work on mongo shell? What advantages does a ODM like mongoose provide? Any other ODMs which fit into the mean.io stack?
vmr.
Well, I guess it depends of what you want to do.
Lets take what Mongoose says in their website:
Mongoose provides a straight-forward, schema-based solution to modeling your application data and includes built-in type casting, validation, query building, business logic hooks and more, out of the box.
Resuming what I understood of that it helps you to model your database and helps you to mantain your logic organized using model like in an MVC. It's a very mature ODM and very recomended for using with MVC.
In my personal experience I started using Monk, which did the trick for a while, but the I started to need to use aggregate and other stuff that apparently Monk can't handle. And I don't wanted to tie my system to an model because is a very mutable project, so I started using Mongoskin which is, at least for now, perfect for me because I can use pratically the same query that I use at Robomongo (Which is like a Navicat, PgAdmin, PhpMyAdmin but for MongoDB) in my ExpressJs code.
Mongoose is saving your time by mapping the JavaScript Data objects to the MongoDB database.
MongoDB and NodeJS Integration

Is Mongoose better than waterline in a Sails app?

I am developing a sails.js app. In my previous sails app, I used MySQL with the default waterline ORM. I am planning to use Mongodb in my new app. I have come across limitations with waterline, one of them being, querying an association. My current app is logically intense and deals with a lot of statistical data. Is it safe to continue with waterline or replace it with Mongoose?
Waterline is getting better and supports for many features that were missing lately. Since both have association support now, any of them would be fine for this task. Only advantage is Waterline is that if the project is based on Sails, using it would be much easier.
Waterline associations
There is an example on Github for a Mongoose ORM Hook that should facilitate the disabling of Waterline and other associated hooks and enabling Mongoose as the ORM to use in your apps.

Resources