Я пытаюсь создать связанную таблицу тегов с идентификатором тега и идентификатором связанной статьи, поэтому сначала я делаю тег findOrCreate, эта функция работает и работает отлично, но когда я делаю тогда (функция (результат) { }) и с результатом я создаю свою ассоциацию с идентификатором тега как result.id возвращенный идентификатор является нулевым! Так что в случае, когда я делаю простое создание, он возвращает мне идентификатор, но когда я делаю findOrCreate, идентификатор равен нулю !! Что я могу сделать, чтобы получить идентификатор моей созданной записи с помощью функции findOrCreate? если есть другое решение для создания записи, которая еще не существует, я также заинтересован .... вот моя функция в app.js
function(sales, callback) {
if(req.body.tags) {
tagsArray = req.body.tags.split(',');
var obj = tagsArray.reduce(function(acc, cur, i) {
acc[i] = cur;
return acc;
}, {});
callback(null, async.forEachOf(obj, (value,key,callback) => {
tagsFormattedArray.push({tags: value})
tagsController.create(req, res, value).then(function(result){
callback(null, tagSpottingController.create(req, res, result.id, idCreation))
})
}))
}
}
вот мой контроллер тегов:
module.exports = {
create(req, res, tag) {
return Tags
.findOrCreate({
where: {
name: tag
},
defaults: {
name: tag
}
})
}
};
вот моя модель тега:
module.exports = (sequelize, DataTypes) => {
const Tags = sequelize.define('Tags', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: DataTypes.STRING
},
createdAt: {
type: DataTypes.DATE,
field: 'createdAt'
},
updatedAt: {
type: DataTypes.DATE,
field: 'updatedAt'
}},{
timestamps: true
});
return Tags;
}
Я прочитал документацию и проверил это на своем контроллере тегов:
module.exports = {
findOrCreate(req, res, tag) {
return Tags
.findOrCreate({
where: {
name: tag
},
defaults: {
name: tag
}
}).spread((tags, created) => {
console.log(tags.get({
plain: true
}))
})
}
};
Консоль регистрирует все мои созданные теги (те, которых нет в БД) того поведения, которое я хотел! ... но когда я пытаюсь сделать возврат вместо журнала консоли, чтобы получить мои идентификаторы, это возвращает мне только ложный результат (тот, который уже существует в БД) ... есть что-то, чего я не понимаю