Javascript id:在sequelize中创建新项时为null

Javascript id:在sequelize中创建新项时为null,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,当我尝试创建一个新的对话项时,Sequelize将返回一个id为null的对象,尽管数据库中有一个有效的id。如何让Sequelize将最后插入的id返回到新创建的项 Conversation.create({ 键入:“private”, 创建日期:1, }).然后(对话=>{ 答复(对话); }); 会回来的 { “类型”:“对话”, “id”:空, “createdBy”:1, “创建时间”:“2016-03-18T01:47:48.000Z” } 我的代码: const Convers

当我尝试创建一个新的对话项时,Sequelize将返回一个id为null的对象,尽管数据库中有一个有效的id。如何让Sequelize将最后插入的id返回到新创建的项

Conversation.create({
键入:“private”,
创建日期:1,
}).然后(对话=>{
答复(对话);
});
会回来的

{
“类型”:“对话”,
“id”:空,
“createdBy”:1,
“创建时间”:“2016-03-18T01:47:48.000Z”
}
我的代码:

const Conversation=model.define('Conversation'){
身份证:{
类型:Sequelize.INTEGER,
primaryKey:没错,
},
类型:{
类型:Sequelize.ENUM,
值:['private','group'],
验证:{
isIn:[“私人”、“集团”],
},
},
创建人:{
类型:Sequelize.INTEGER,
字段:“创建人”,
},
}, {
tableName:“对话”,
时间戳:对,
createdAt:“已创建”,
更新日期:false,
获取方法:{
类型:()=>“对话”,
},
});
const User=model.define('User'{
身份证:{
类型:Sequelize.INTEGER,
primaryKey:没错,
},
名字:{
类型:Sequelize.STRING,
字段:“名字”,
allowNull:错,
},
姓氏:{
类型:Sequelize.STRING,
字段:“姓氏”,
阿洛诺:是的,
},
电邮:{
类型:Sequelize.STRING,
allowNull:错,
},
简介:{
类型:Sequelize.STRING,
字段:'profile_img',
allowNull:错,
},
密码:Sequelize.STRING,
}, {
tableName:'用户',
时间戳:对,
createdAt:“已创建”,
updatedAt:'updated_at',
获取方法:{
类型:()=>“用户”,
},
});
对话。归属于(用户{
foreignKey:“对话_id”,
otherKey:'user_id',
通过:“对话用户”,
时间戳:false,
});
User.belongTomany(对话{
例如:“对话”,
foreignKey:“用户\u id”,
otherKey:“对话\u id”,
通过:“对话用户”,
时间戳:false,
});

您需要在id字段中输入
自动递增:true

id: {
    type: Sequelize.INTEGER,
    primaryKey: true,
    autoIncrement: true,
  }
就我个人而言,我建议跳过
id
列,因为sequalize会自动为您完成这项工作,而且效果很好


希望有帮助:)

问题是我的MySQL版本(5.6而不是5.7)更新了它,现在我得到了承诺中创建的项目的id。

您使用的是哪个版本的sequelize?然后键入对话?真的要还给你吗?还有一件事,请尝试在承诺代码中添加一个.catch(function(err){console.log(err);})。我使用的是
“mysql”:“2.10.2”,“sequelize”:“3.19.3”
。catch不会console.log任何东西当我添加
自动增量:true
或从模型中删除id列时,我会得到一个
SequelizeUniqueConstraintError:Validation错误
主必须是唯一的
在进行更改后确保使用sync(强制:true)并重新启动服务器我已同步并重新启动,但没有任何区别。可能您已将自动增量计数器设置为数据库中已存在的值。试着改变它。