【发布时间】:2017-07-13 23:13:45
【问题描述】:
var _ = require('lodash');
var Promise = require('bluebird');
var Sequelize = require('sequelize');
var ResourceNotFound = require('./errors').ResourceNotFound;
var ResourceAccessDenied = require('./errors').ResourceAccessDenied;
var ResourceExpired = require('./errors').ResourceExpired;
var ConferenceState = {
NEW: 'new',
...
};
module.exports.define = function define(options) {
var sequelize = options.sequelize;
return sequelize.define('conference', {
id: {
type: Sequelize.UUID,
defaultValue: Sequelize.UUIDV4,
primaryKey: true
},
startDate: {
type: Sequelize.DATE,
},
endDate: {
type: Sequelize.DATE,
},
state: {
type: Sequelize.ENUM(
ConferenceState.NEW,
...
),
defaultValue: ConferenceState.NEW,
required: true,
allowNull: false
}
}, {
classMethods: {
getOrCreateConference: function createConference(data) {
return new Promise(function (resolve, reject) {
var Conference = sequelize.models.conference;
Conference.findOne({
where: data
}).then(function(conference){
if(_.isObject(conference)) {
resolve(conference);
} else {
return Conference.create(data);
}
}).then(function(conference){
resolve(conference);
}).catch(function(err){
reject(err);
});
});
},
scheduleConference: function scheduleConference(start, end) {
// TODO
},
}
});
};
我的问题现在是关于如何处理以下任务的理论问题:
- 会议必须是可安排的
所以会议有一个固定的开始和结束日期。它必须具有具有值的那些字段,并且在尚未启动或已结束时也无法加入。否则会报错。
所以我需要一个方法来说明我想安排会议并传递开始/结束值。
这可以用一种方法完成还是应该分开?我需要什么方法,他们在他们的程序中基本上会做什么?
【问题讨论】:
-
您究竟希望您的方法做什么?只需设置会议的
startDate和endDate或其他一些动作? -
@piotrbienias 是的,这是最低要求。稍后的其他方法是加入会议并检查它是否仍然有效(开始,结束)和其他验证。
标签: javascript node.js sequelize.js