【问题标题】:Sequelize object.add not returning id?Sequelize object.add 不返回 id?
【发布时间】:2017-06-20 10:09:02
【问题描述】:

我将 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'。

【问题讨论】:

    标签: node.js sqlite sequelize.js


    【解决方案1】:

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

    这意味着表条目仅在与源表或目标表一起使用时才有意义。它只是为了定义关联而存在,因此在出现“is not associated to”类型错误时值得注意。

    【讨论】:

      猜你喜欢
      • 2019-04-04
      • 1970-01-01
      • 2023-03-16
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-05
      • 2019-11-28
      相关资源
      最近更新 更多