Moe-Counter/db/mongodb.js
journey-ad c3f18f8b34 perf: Delayed writing to database
- Implement delayed writing feature to database for improved performance and reduced write frequency
- Update docs
2023-03-06 18:59:42 +08:00

56 lines
1.0 KiB
JavaScript

'use strict'
const mongoose = require('mongoose')
const schema = require('./schema')
// the default mongodb url (local server)
const mongodbURL = process.env.DB_URL || 'mongodb://127.0.0.1:27017'
mongoose.connect(mongodbURL, {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false
})
const Count = mongoose.connection.model('Count', schema)
function getNum(name) {
return Count
.findOne({ name }, '-_id -__v')
.exec()
}
function getAll() {
return Count
.find({ }, '-_id -__v')
.exec()
}
function setNum(name, num) {
return Count
.findOneAndUpdate({ name }, { name, num }, { upsert: true })
.exec()
}
function setNumMulti(counters) {
const bulkOps = counters.map(obj => {
const { name, num } = obj
return {
updateOne: {
filter: { name },
update: { name, num },
upsert: true
}
}
})
return Count.bulkWrite(bulkOps, { ordered : false })
}
module.exports = {
getNum,
getAll,
setNum,
setNumMulti
}