sequelize用hour = 2解释日期

时间:2017-01-09 01:35:45

标签: javascript mysql node.js sequelize.js

我尝试使用sequelize在日期字段中搜索数据库中的记录:

date_from2是这个值:

2017-01-09

和sequelize将其解释为小时= 2的日期:

SELECT `id`, `user_id`, `date`, `total_visits`, `created_at`, `updated_at` FROM `table1` AS `table1` WHERE `table1`.`user_id` = 123 AND `table1`.`date` = '2017-01-09 02:00:00' LIMIT 1;

它每次创建一条新记录,而不是更新它。 插入时,将使用以下值插入日期:

2017-01-09 00:00:00

这是我的代码:

where = { user_id: user_id,
                  date: date_from2
                 };

        values = {
                    user_id: user_id,
                    date: date_from2,
                    total_visits: total_visits

                };

        Model.findOne({where: where}).then(function (record) {
            if (!record) {
                // Item not found, create a new one
                Model.create(values)
                    .then(function () {
                        console.log('created!');
                    }).error(function (err) {
                        console.log('error on create');
                    });
            } else {
                // Found an item, update it
                Model.update(values, {where: where})
                    .then(function () {
                        console.log('updated!');
                    })
                    .catch(function (err) {
                        console.log('error on update');
                    });
            }
        });

1 个答案:

答案 0 :(得分:0)

如果您尝试获取特定用户,只需使用用户的user_id而不是date进行查询:

Model.findOne({where: {user_id: user_id}})

问题在于,它以与您传入的内容不同的方式存储date。因此,您永远无法找到现有用户并且您不断创建新用户。使用UTC时区没有任何问题,您应该能够将其转换为任何其他时区。