gpt4 book ai didi

javascript - session 模型-创建日程方法(Sequelize)

转载 作者:行者123 更新时间:2023-12-03 04:56:25 24 4
gpt4 key购买 nike

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
},
}
});
};

我的问题现在是一个关于如何完成以下任务的理论问题:

  • session 必须是可安排的

因此 session 有固定的开始和结束日期。它必须具有带有值的字段,并且在尚未开始或结束时也不可能加入。否则会抛出错误。

所以我需要一个方法来说明我想要安排一次 session 并传递开始/结束值。

这可以在一个方法中完成还是应该分开?我需要什么方法以及他们在程序中基本上会做什么?

最佳答案

根据您的评论,您的 scheduleConference 方法必须简单地更新指定的实例( session )。你确实把它放在了classMethods中,但是我建议你把它放在instanceMethods中,它的简单实现可能如下:

classMethods: {
},
instanceMethods: {
scheduleConference: function(start, end){
return this.update({ startDate: start, endDate: end }).then((conference) => {
// here you get updated instance of conference
return reference;
});
}
}

上面的方法可以这样使用

// assuming that conference is a sequelize model instance
conference.scheduleConference(start, end).then((self) => {
// updated conference as self
});

<小时/> 编辑

我看到你已经实现了getOrCreateConference方法,但是sequelize自己提供了这种方法,它被称为findOrCreate 。您可以在 Sequelize 模型上使用它,例如 models.Model.findOrCreate()

关于javascript - session 模型-创建日程方法(Sequelize),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42416317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com