123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /**
- * ID计数器数据模型
- *
- * @author CaiAoLin
- * @date 2017/6/23
- * @version
- */
- const BaseModel = require("../../common/base/base_model");
- const mongoose = require("mongoose");
- class CounterModel extends BaseModel {
- /**
- * 构造函数
- *
- * @return {void}
- */
- constructor() {
- let parent = super();
- parent.model = mongoose.model('counter');
- parent.init();
- }
- /**
- * 获取自增id
- *
- * @param {String} model
- * @return {Number}
- */
- async getId(model = '') {
- if (model === '') {
- return 0;
- }
- let update = {$inc: {sequence_value: 1}};
- let condition = {_id: model};
- let options = {new: true};
- // 先查找更新
- let idData = await this.db.findAndModify(condition, update, options);
- let idResult = idData === null || idData.sequence_value === undefined ? 0 : idData.sequence_value;
- // 如果没有对应记录则新增
- if (idResult === 0) {
- let insertResult = await this.db.create({_id: model, sequence_value: 1});
- idResult = Object.keys(insertResult).length > 0 ? 1 : 0;
- }
- return idResult;
- }
- }
- module.exports = CounterModel;
|