如何使用sequelize migrations/seeds插入初始数据?

nac*_*cab 29 migration node.js express sequelize.js

我正在尝试创建我的初始迁移以填充测试数据库,但我无法使其正常工作.这就是我迁移中的内容:

'use strict';

module.exports = {
  up: function (queryInterface, Sequelize) {
    return [
      queryInterface.bulkInsert('Users', [
        { username: "user1" },
        { username: "user2" }
    ])];
  },

  down: function (queryInterface, Sequelize) {
    return queryInterface.dropTable('Users');
  }
};
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

== 20151024144833-create-conjugation: migrating =======
{ [SequelizeUniqueConstraintError: Validation error]
  name: 'SequelizeUniqueConstraintError',
  message: 'Validation error',
  errors: [],
  fields: [] }
Run Code Online (Sandbox Code Playgroud)

必须有一种更简单的方法来做到这一点.我已经检查了其他SO问题,但是在当前版本的sequelize中语法已经改变了.

UPDATE

好吧,我意识到自己的错误:我假设sequelize会处理时间戳.这解决了这个问题:

up: function (queryInterface, Sequelize) {
  console.log(User);
  return [
    queryInterface.bulkInsert('Users', [
      { username: "user1", createdAt: Date.now(), updatedAt: Date.now() },
      { username: "user2", createdAt: Date.now(), updatedAt: Date.now() }
    ])
  ];
}
Run Code Online (Sandbox Code Playgroud)

但我仍然想知道这是否是种子数据库的正确方法.有没有办法使用它User.create({})

Edu*_*omo 6

您可以使用下一个:

const City = sequelize.define('city', {
  name: { type: Sequelize.STRING },
  order_: { type: Sequelize.INTEGER }
});
City.sync().then(() => {
  City.create({
    name: 'Neuquen',
    order_: 0
  });
  City.create({
    name: 'General Roca',
    order_: 1
  });
});
Run Code Online (Sandbox Code Playgroud)

或者在http://docs.sequelizejs.com/en/latest/docs/migrations/阅读有关“迁移”的信息


tjp*_*tjp 6

new Date()
Run Code Online (Sandbox Code Playgroud)

mysql 也需要,即

  return queryInterface.bulkInsert('users', [
  {
    "Forename":"A",
    "Surname": "User",
    "UserType":"1",
    "Email":"auser@gmail.com",
    "Password":"password",
    "LastLogin":0,
    "Tokens": JSON.stringify({"tokens":[]}),
    "CreatedBy": 999,
    "CreatedAt": new Date(),
    "UpdatedAt": new Date()
  }]);
Run Code Online (Sandbox Code Playgroud)


csh*_*ion 5

另一种方法是使用: sequelize fixtures,您可以使用声明为 json 文件或其他格式的默认数据来初始化您的表。