express-mgo
v1.0.2
Published
# Default query - start_date - end_date - q ? use for search use with setSearchField Function - limit - page - sort ? EX: created_at|desc or created_at|asc - summary ? summary response
Downloads
4
Readme
Required bson package and only work with mongoose
NOTE, This is just little part of how to use this package
IF HAVE FREE TIME I WILL ADJUST DOCS AND PACKAGE
Default query
- start_date
- end_date
- q ? use for search use with setSearchField Function
- limit
- page
- sort ? EX: created_at|desc or created_at|asc
- summary ? summary response
Function
- lookup ? Join with lookup concept
- populate ? Joi with mongoose concept
- set ? set response json
- setSearchField ? add search field
- match ? condition
- custom ? custom aggregation
- forcePaginate ? forcePaginate by requried limit & page in query
- select ? select field
- unset ? remove field from response
- setOption ? option for Search & Filter Date
- exec ? Important This function must be call after finish condition
const express = require("express")
const mongoose = require("mongoose")
const app = express()
const { Query } = require("express-mongo")
const query = new Query(mongoose)
const result = await query.model("order")
.unset("staff_id user_id")
.setOption({ performPaginateBeforeLogic: false })
.setSearchField("seller_id.name", "payment_method_id.title", "order_number")
.exec(req)
// Mongoose concept populate ex1
const query = new Query(mongoose)
const result = await query.model("order")
// Support only object for level 1 populate
.populate({
path:"some_ref_field",
select:"name"
})
.unset("staff_id user_id")
.setSearchField("some_ref_field.name")
.exec(req)
// Mongoose concept populate ex2
const query = new Query(mongoose)
const result = await query.model("order")
// Support only object for level 1 populate
.populate({
path:"some_ref_field",
select:"name",
// also have unset,select,many
populate:{
modelName:"modelnameOfThisLevel",
path:"some_ref_field",
select:"name"
// also have unset,select,many
}
})
.unset("staff_id user_id")
.setSearchField("some_ref_field.name")
.exec(req)
// aggregate concept populate ex1
const query = new Query(mongoose)
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId" })
.exec(req)
// aggregate concept populate ex2 with unset: remove field
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId", unset: "field1 field2" })
.exec(req)
// aggregate concept populate ex3 with select: take only select field
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId", select: "field1 field2" })
.exec(req)
// aggregate concept populate ex4 with many: true if ONE-TO-MANY will return array
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId", select: "field1 field2", many: true })
.exec(req)
// aggregate concept populate ex4 with many: true if ONE-TO-MANY will return array
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId", select: "field1 field2", many: true})
.exec(req)
// aggregate concept $project
const query = new Query(mongoose)
await query.model("order")
.lookup({ from: "some_model", localField: "localFieldId", foreignField: "_id", as: "localFieldId" })
.project("field1 field2")
.exec(req)