最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

足以验证重复的用户名吗?

网站源码admin13浏览0评论

足以验证重复的用户名吗?

足以验证重复的用户名吗?

所以我有这个组织的续集模型:

module.exports = (sequelize, Sequelize) => {
    const Organization = sequelize.define("organization", {
      id: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true,
        allowNull: false
      },
      organizationName: {
        type: Sequelize.STRING,
        allowNull: false,
        notEmpty: true,
        unique: {
          args: 'username',
          msg: 'This username is already taken!'
        }
      },
      emailAddress: {
        type: Sequelize.STRING,
        allowNull: false,
        validate: {
          isEmail: true
        },
        unique: {
          args: 'email',
          msg: 'The email is already taken!'
       }
      },
      physicalAddress: {
        type: Sequelize.STRING,
        allowNull: true
      },
      city: {
          type: Sequelize.STRING,
          allowNull: false
      },
      country: {
          type: Sequelize.STRING,
          allowNull: false
      },
      phone: {
          type: Sequelize.INTEGER,
          allowNull: true
      },
      websiteAddress: {
          type: Sequelize.STRING,
          allowNull: true
      }
    }, {
        timestamps: false,
        underscored: true,
        freezeTableName: true
    });

    return Organization;
  };

当用户向新组织注册时,我要确保输入的用户名是唯一的。

我的问题是...我的实施够吗?还是我应该在插入之前做一个organization.find

它确实有效,但我很担心。

我知道,使用上述方法,即使验证失败,ID也会自动递增。但是还有其他问题吗?

回答如下:

如果名称不是唯一的,您将依靠数据库排除错误。这实际上应该是万不得已的做法,建议您在尝试插入之前查询表。但是,您可以查看upsert样式的操作,例如findOrCreate

附加思想:如果保留现有用户名的缓存列表并搜索before,然后尝试进行插入-作为验证过程的一部分,则对数据库的压力将减少,可伸缩性更好,并为用户带来更好的体验。理想情况下,当用户输入组织名称时,将从ajax查询中调用它。

关于一些吸引人的想法的更新:Redis是一个很好的开始。它已在所有主要提供商(如AWS,Heroku,Azure等)中广泛采用和实施。设置简单,在本地轻松设置。具有集中的共享缓存,使您可以在Web / api实例之间共享数据,查询速度将大大提高,并且在缓存的数据足够时,可以减轻数据库的负担。我喜欢ioredis驱动程序。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论