Node.js &引用;错误:验证错误“;在";中执行两个Sequelize命令时的消息;“预测试”;剧本

Node.js &引用;错误:验证错误“;在";中执行两个Sequelize命令时的消息;“预测试”;剧本,node.js,postgresql,testing,sequelize.js,Node.js,Postgresql,Testing,Sequelize.js,我正在为我的项目写测试。它使用Sequelize,我考虑做以下工作: "pretest": "NODE_ENV=testing yarn sequelize db:migrate && yarn sequelize db:seed:all", "test": "mocha --require @babel/register 'src/tests/**/*.spec.js'", "posttest": "NODE_ENV=testing yarn sequelize db:migr

我正在为我的项目写测试。它使用Sequelize,我考虑做以下工作:

"pretest": "NODE_ENV=testing yarn sequelize db:migrate && yarn sequelize db:seed:all",
"test": "mocha --require @babel/register 'src/tests/**/*.spec.js'",
"posttest": "NODE_ENV=testing yarn sequelize db:migrate:undo:all"
但以下情况表明:

❯ yarn test     
yarn run v1.19.2
$ NODE_ENV=testing yarn sequelize db:migrate && yarn sequelize db:seed:all
$ /home/gabriel/Workspace/graphql-apollo/node_modules/.bin/sequelize db:migrate

Sequelize CLI [Node: 12.13.1, CLI: 5.5.1, ORM: 5.21.2]

Loaded configuration file "src/config/database.js".
== 20191123132531-create-users: migrating =======
== 20191123132531-create-users: migrated (0.047s)

== 20191123132658-create-messages: migrating =======
== 20191123132658-create-messages: migrated (0.028s)

$ /home/gabriel/Workspace/graphql-apollo/node_modules/.bin/sequelize db:seed:all

Sequelize CLI [Node: 12.13.1, CLI: 5.5.1, ORM: 5.21.2]

Loaded configuration file "src/config/database.js".
== 20191123132945-users: migrating =======

ERROR: Validation error

error Command failed with exit code 1.
如果我分别执行迁移和种子设定命令,它可以正常工作。我还试图同时使用
,但同样的情况也发生了

"pretest": "concurrently 'NODE_ENV=testing yarn sequelize db:migrate' 'yarn sequelize db:seed:all'",

我遇到了同样的问题,并设法解决了它,如下所示:

错误:“pretest”:“NODE_ENV=test sequelize db:migrate&&sequelize db:seed:all”

右:“pretest:“NODE_ENV=test sequelize db:migrate&&NODE_ENV=testsequelize db:seed:all”

@gamofe将
--debug
标志添加到命令中,以查看有关错误的更多信息。e、 g

    $ sequelize db:seed:all --debug
很可能是因为您运行的是
sequelize db:seed:all
,而没有撤消以前的seed,所以出现此错误。如果您的表中已经包含了您试图播种的数据,其中一些数据具有唯一约束,那么您将遇到唯一约束错误。 要解决此问题,您需要在设定种子之前运行
sequelize db:seed:undo:all

您可以在此处找到更多信息

检查您的
查询接口。bulkInsert()
或其他insert语句在处传递
创建值和在
处传递
更新值。sequelize的种子部分不会自动添加此字段,并且数据库对这些字段有NOTNULL限制

在我的例子中,我必须更改种子文件的内容以包括createdAt和updatedAt字段

我改变了:

module.exports={
up:async(查询接口,续集)=>{
等待queryInterface.bulkInsert('Users'[
{id:1,名称:`God`,类型:UserTypes.Person},
]);
}
}
致:

module.exports={
up:async(查询接口,续集)=>{
const currentTime=new Date(new Date().toutString()).toISOString();
等待queryInterface.bulkInsert('Users'[
{id:++i,名称:`God`,类型:UserTypes.Person,createdAt:currentTime,updatedAt:currentTime},
]);
}
}
注意:我使用
下划线:true
选项。如果没有,则需要使用created_at和updated_at代替createdAt和updatedAt