Skip to content

Instantly share code, notes, and snippets.

@lenconda
Created February 8, 2019 13:38
Show Gist options
  • Save lenconda/5ad2788a15c1125a41cbea93e1fc2495 to your computer and use it in GitHub Desktop.
Save lenconda/5ad2788a15c1125a41cbea93e1fc2495 to your computer and use it in GitHub Desktop.
MongoDB example
const mongoose = require('mongoose')
const {
DB_HOST,
DB_PORT,
DB_USER,
DB_PASSWORD,
DB_NAME } = require('../../config')
const getLogger = require('../utils/logger')
const logger = getLogger(__filename)
const _uri = Symbol('uri')
const _database = Symbol('database')
class DBModel {
constructor () {
this[_uri] = `mongodb://${(DB_USER && DB_PASSWORD) ? `${DB_USER}:${DB_PASSWORD}@`: ''}${DB_HOST}:${DB_PORT}/${DB_NAME}`
this[_database]
}
connect () {
this[_database] = mongoose
.connect(this[_uri], { useNewUrlParser: true,
useCreateIndex: true })
.catch(err => logger.error(err.message))
}
disconnect () {
mongoose.disconnect()
}
}
module.exports.DBModel = DBModel
const InsertResultItemDataModel = require('../models/spiders')
const uuid = require('uuid/v3')
const { DBModel } = require('../connect_db')
const dbModel = new DBModel()
async function test () {
dbModel.connect()
let date = Date.parse(new Date())
let url = `https://example.com/${date}`
await InsertResultItemDataModel.insertMany([{
uuid: uuid(url, uuid.URL),
url,
filename: `${date}.pdf`,
content: 'asdasdasdasdasdasdasd',
created_at: date,
updated_at: date
}])
dbModel.disconnect()
}
test()
const mongoose = require('mongoose')
const uuid = require('uuid/v3')
const insertResultItemData = new mongoose.Schema({
uuid: {
type: String,
index: true,
required: true
},
url: {
type: String,
required: true
},
filename: {
type: String,
required: true
},
content: {
type: String,
required: true
},
created_at: {
type: String,
required: true
},
updated_at: {
type: String,
required: true
}
}, { timestamp: true })
const InsertResultItemDataModel
= mongoose.model('datas', insertResultItemData)
module.exports = InsertResultItemDataModel
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment