2017-02-03 3 views
0

Я использую Sequelize 3.27.0 с NodeJS 6.7.0 и Sqlite 3.Sequelize object.add не возвращает идентификатор?

У меня есть «многие ко многим» отношения и пытается создать новые отношения, но на этом я не вижу идентификатор не вернулся. Я создал простой тестовый пример, чтобы попытаться понять, что я могу сделать неправильно. Может кто-нибудь предложить, что я делаю неправильно:

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 действительно есть набор «Autoincrement» в действительности. Результатом выполнения вышеописанного является «undefined» для значения id.

ответ

0

Хотя я не нашел конкретного ответа, лучшим из найденных я считаю, что таблицу «UserProject» следует рассматривать как «таблицу сопоставления», поэтому для записей на самом деле не нужен отдельный идентификатор.

Это означает, что записи в таблице имеют смысл при использовании в сочетании с исходными или целевыми таблицами. Он просто существует, чтобы определить ассоциацию, и поэтому стоит отметить, когда представлены ошибки типа «is not associated to».

Смежные вопросы