Moe-Counter/db/mongodb.js

57 lines
1.1 KiB
JavaScript
Raw Normal View History

"use strict";
const mongoose = require("mongoose");
const schema = new mongoose.Schema(
{
name: { type: String, required: true },
num: { type: Number, required: true }
},
{ collection: 'tb_count', versionKey: false }
);
2020-08-21 16:11:20 +00:00
// the default mongodb url (local server)
const mongodbURL = process.env.DB_URL || "mongodb://127.0.0.1:27017";
2020-08-21 16:11:20 +00:00
2024-11-20 03:46:51 +00:00
mongoose.connect(mongodbURL);
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,
};