Sequelize object.add没有返回id?

时间:2017-02-03 05:33:56

标签: node.js sqlite sequelize.js

我正在使用Sequelize 3.27.0与NodeJS 6.7.0和Sqlite 3。

我有'多对多'的关系,并尝试创建一个新的关系,但在这样做时,我看到没有返回id。我创建了一个简单的测试用例,试图了解我可能做错了什么。任何人都可以建议我做错了什么:

var User = sequelize.define('user', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    }
});

var Project = sequelize.define('project', {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    }
});

var UserProject = sequelize.define('user_project', {
  id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
  },
  role: Sequelize.STRING,
});

User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });

sequelize.sync({}).then(function () {
    var userX;

    User.create({}).then(function (user) {
        userX = user;
        return Project.create({});
    }).then(function (project) {
        return userX.addProject(project);
    }).then(function (userProject) {
        console.log(userProject.id);
    });
});

正如您所看到的,UserProject的id确实将'autoIncrement'设置为true。对于id的值,运行上述内容的结果是'undefined'。

1 个答案:

答案 0 :(得分:0)

虽然我还没有找到具体的答案,但我发现的最好的答案是' UserProject'表格应被视为“映射表”,因此条目并不需要不同的ID。

这意味着表条目仅在与源表或目标表结合使用时才有意义。它只是存在以定义一个关联,因此值得注意的是当提交" is not associated to"类型错误。