如何使用 sequelize 播种 uuidv4

Posted

技术标签:

【中文标题】如何使用 sequelize 播种 uuidv4【英文标题】:How to seed uuidv4 with sequelize 【发布时间】:2018-03-05 10:18:56 【问题描述】:

我正在尝试使用 sequilize generateUUID 播种 uuid 但我收到此错误Seed file failed with error: sequelize.Utils.generateUUID is not a function TypeError: sequelize.Utils.generateUUID is not a function

如何播种 UUID?

    return queryInterface.bulkInsert('companies', [
        id: sequelize.Utils.generateUUID(),
        name: 'Testing',
        updated_at: new Date(),
        created_at: new Date()
    ]);

【问题讨论】:

【参考方案1】:

只需安装 uuid:

npm install uuid

在你的种子文件上:

const uuidv4 = require('uuid/v4');

module.exports = 
  up: (queryInterface, Sequelize) => 
    return queryInterface.bulkInsert('yourTableName', [
      
        id: uuidv4()
      ],
 );

【讨论】:

Sequelize 在底层使用了uuid,所以这个包应该已经可用了。不过,Sequelize 并没有以有用的方式公开 uuidv4 方法。 现在得到DeprecationWarning: Deep requiring like 'const uuidv4 = require('uuid/v4');' is deprecated as of uuid@7.x. Please require the top-level module when using the Node.js CommonJS module or use ECMAScript Modules when bundling for the browser. See https://github.com/uuidjs/uuid#deep-requires-now-deprecated for more information. 当我切换到推荐的导入语法时,我得到一个不同的错误。【参考方案2】:

由于它包含在 DataTypes 包中,因此按照 Matt 的建议使用 already available 是有意义的。你可以这样使用它:


    ...,
    type: DataTypes.UUID,
    defaultValue: DataTypes.UUIDV4,
    ...

【讨论】:

哇!将键从“default”更改为“defaultValue”为我解决了这个问题。谢谢 很好,与上面的答案相比,这已经很好了,因为 sequelize 需要它来实现。【参考方案3】:

npm install uuid

将其导入您的播种文件

const  v4: uuidv4  = require('uuid');

return queryInterface.bulkInsert('companies', [
    id: uuidv4(),
    name: 'Testing',
    updated_at: new Date(),
    created_at: new Date()
]);

See more on the uuid documentation

【讨论】:

我想,链接是 Sequelize 文档 不...这是 uuid 文档...我已经更新了答案以澄清这一点..感谢您指出。

以上是关于如何使用 sequelize 播种 uuidv4的主要内容,如果未能解决你的问题,请参考以下文章

跨 Sequelize 关联播种数据

sequelize 播种机上的自定义查询

播种时运行 sequelize 模型钩子

sequelize中如何根据created_at排序?

sequelize(和 sequelize-cli)queryInterface.createTable 在 PostgreSQL 上,PK id 类型为 UUID 和 defaultValue:Se

运行节点 server.js 和重新播种 db 时,表会被删除。续集