For now, I insert the product first and insert multiple product tags in array.
But the product tags will be duplicate without validating the tag is existed or not.
How could I check tag is existed or not when I insert the tags?
Here is the code I used:
let product = {
product: {
name: 'techtech',
tagline: '描述',
thumbnail: 'images/products/techtech/thumbnail.png'
},
tags: [
{ name: 'Android', slug: 'android' },
{ name: 'MacOS', slug: 'macos' },
{ name: 'Windows', slug: 'windows' },
{ name: 'Linux', slug: 'linux' }
],
links: [ { url: 'techtech.cc' } ],
covers: [
{ url: 'images/products/techtech/cover_0.png', index: 0 },
{ url: 'images/products/techtech/cover_1.png', index: 1 }
]
}
// insert product
return db.transaction(trx => {
return trx('products')
.insert(product.product)
.returning('id')
// insert product_tags
.then(productIDs => {
return trx(productTags)
.insert(product.tags)
.returning('id')
// insert product_producttag_mapping
.then(productTagIDs => {
let productTags = productTagIDs.map((productTagID) => {
let productTag = {
product_id: productID,
producttag_id: productTagID
}
return productTag;
});
return trx('product_producttag_mapping')
.insert(productTags)
.returning('id')
})
})