froncubator-mongo
MongoDB library with typing and schema-models.
https://github.com/froncubator/froncubator-mongo
Installation and Usage
npm install froncubator-mongo
Quick Start
const FroncubatorMongo = require('froncubator-mongo')
async function main() {
const db = new FroncubatorMongo()
await db.connect('mongodb://user:password@ip_address:mongo_port/db_name', 'db_name')
db.models.user = function() {
return {
firstName: '',
lastName: '',
age: 0,
interests: []
}
}
await db.insert('user', {
firstName: 'Jack',
lastName: 'Black',
age: 24,
interests: ['beer', 'develop like a beast ;)', 'sleep']
})
}
main()
Create Document
db.models.post = function() {
return {
title: '',
text: ''
}
}
try {
let newPost = await db.insert('post', {
title: 'Hello',
text: 'World'
})
await db.insert('post', {
title: 'Hello',
text: 100
})
db.insert('post', {
title: 'Hello',
text: 100
}).then(
data => {
console.log(data)
},
error => [
console.log(error)
]
)
} catch(err) {
console.log(err)
}
Insert and Update methods return "reject" if field has wrong type or not exist in "db.models"
Find Document
let posts = await db.find('post', { title: 'Hello' })
let posts = await db.find('post',
{ title: 'Hello' },
{
fields: {
title: 1,
text: 0
},
limit: 10,
sort: : { title: 1 }
}, {
cursor: true
})
You can use all query params and options from official docs http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#find
Update Document
await db.updateOne('post', { title: 'Hello' }, { $set: { text: 'Bro!' } })
await db.updateMany('post', { title: 'Hello' }, { $set: { text: 'Bro!' } })
You can use all features of mongodb. http://mongodb.github.io/node-mongodb-native/3.0/quick-start/quick-start/
Delete Documents
await db.deleteOne('post', { title: 'Hello' })
await db.deleteMany('post', { title: 'Hello' })
Drop Collection
await db.dropCollection('post')
Drop Indexes
await db.dropIndex('post')
Connect
await db.connect('some_mongo_url')
Create ObjectID
db.toObjectID('59d10a3d320d720010522391')
db.toObjectID(['59d10a3d320d720010522391', '59d10a3d320d720010522391'])
Disconnect
await db.disconnect()
Some features
Create instance of the class with additional params.
const db = new FroncubatorMongo({
defaultQueryPart: {
hide: {
default: 0,
$ne: 1
}
}
})
Execution time request in db.find()
db.maxTimeMS = 10000
add own db connection and add to FroncubatorMongo
const FroncubatorMongo = require('froncubator-mongo');
let db = null;
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'myproject';
let fMongo = new FroncubatorMongo()
MongoClient.connect(url, function(err, client) {
db = client.db(dbName);
fMongo.db = db
});
Tested in Node.js v8+ and use async/await pattern.
By Froncubator Pro
MIT license