SequelizeJS 使用 If/Else 语句和日期字段 GetterMethods

SequelizeJS Using If/Else Statements with Date Field GetterMethods

我有一个 运行 进入一个有趣的问题,我正在使用 momentjs 和 Sequelize getter 定义为我的两个日期字段(例如 3/1/16 - 3/7/16)。这个逻辑有效,但我有这样的例子,在没有填写这些字段的情况下可以在我的数据库中创建记录,结果保留为空。在这些情况下,我的记录在我的视图中显示为 (1/1/1970 - 1/1/1970)。我最初认为这是我的视图模板设置的问题,但后来意识到这是 momentjs 为空值填充日期范围。因此,我想知道是否可以使用我的 getter 定义创建一个 if/else 语句,以便在两个字段的值都不存在时基本上不出现。我下面的代码没有实现这个工作流程。有更好的方法吗?

这是我的 if/else 片段:

if (startDate && endDate == null){
   return null;
} else {
   return momentStartDate + ' - ' + momentEndDate;
}

这是我的完整模型:

module.exports = function(sequelize, DataTypes) {

var moment = require('moment');

var Discovery = sequelize.define('discovery', {
    discoveryId: {
        type: DataTypes.INTEGER,
        field: 'discovery_id',
        autoIncrement: true,
        primaryKey: true
    },
    dataDateStart: {
        type: DataTypes.DATE,
        field: 'data_date_start',
        allowNull: true,
        isDate: true
    },
    dataDateEnd: {
        type: DataTypes.DATE,
        field: 'data_date_end',
        allowNull: true,
        isDate: true
    }
},

 {
    freezeTableName: true,
    getterMethods: {
        dataDateRangeSlug: function(){
            var startDate = new Date(this.getDataValue('dataDateStart')); 
            var momentStartDate = moment(startDate).utc().format("MM/DD/YYYY");

            var endDate = new Date(this.getDataValue('dataDateEnd'));
            var momentEndDate = moment(endDate).utc().format("MM/DD/YYYY");

           if (startDate && endDate == null){
            return null;
        } else {
            return momentStartDate + ' - ' + momentEndDate;
         }
        },
        dataDateStartSlug: function(){
            var startDate = new Date(this.getDataValue('dataDateStart')); 
            var momentStartDate = moment(startDate).utc().format("YYYY-MM-DD");

            return momentStartDate;
        },
        dataDateEndSlug: function(){
            var endDate = new Date(this.getDataValue('dataDateEnd'));
            var momentEndDate = moment(endDate).utc().format("YYYY-MM-DD");

            return momentEndDate;
        },
    },
    classMethods: {
        associate: function(db) {
            Discovery.belongsTo(db.User, {foreignKey: 'user_id'}),
            Discovery.hasOne(db.DiscoverySource, {foreignKey: 'discovery_source_id'});
        }
    }
});
    return Discovery;
}

如果将 dataDateRangeSlug 代码替换为

会怎么样
dataDateRangeSlug: function() {
    if (this.getDataValue('dataDateStart') && this.getDataValue('dataDateEnd')) {
        var momentStartDate = moment(this.getDataValue('dataDateStart')).utc().format("MM/DD/YYYY");
        var momentEndDate = moment(this.getDataValue('dataDateEnd')).utc().format("MM/DD/YYYY");

        return momentStartDate + ' - ' + momentEndDate;
    } else {
        return null;
    }
}

虽然我自己还没有尝试过 运行,但我相信这就是您要找的东西