javascript - Sequelize.js silme sorgusu?
findAll gibi bir delete/deleteAll sorgusu yazmanın bir yolu var mı?
Örneğin, şöyle bir şey yapmak istiyorum (MyModel bir Sequelize modeli olduğunu varsayarsak...):
MyModel.deleteAll({ where: ['some_field != ?', something] })
.on('success', function() { /* ... */ });
Cevap #1
Sequelize sürüm 3 ve üzerini kullanan herkes için, şunu kullanın:
Model.destroy({
where: {
// criteria
}
})
Sequelize Dokümantasyonu - Sequelize Eğitimi
Cevap #2
Aşağıdaki dosyalara adım adım, derinlemesine kodları inceledim:
https://github.com/sdepold/sequelize/blob/master/test/Model/destroy.js
https://github.com/sdepold/sequelize/blob/master/lib/model.js#L140
https://github.com/sdepold/sequelize/blob/master/lib/query-interface.js#L207-217
https://github.com/sdepold/sequelize/blob/master/lib/connectors/mysql/query-generator.js
Bulduğum şey:
deleteAll yöntemi yok, bir kayıtta çağırabileceğiniz destroy() yöntemi var, örneğin:
Project.find(123).on('success', function(project) {
project.destroy().on('success', function(u) {
if (u && u.deletedAt) {
// successfully deleted the project
}
})
})
Cevap #3
Bu örnek, geri arama yerine nasıl sözler kullanacağınızı gösterir.
Model.destroy({
where: {
id: 123 //this will be your id that you want to delete
}
}).then(function(rowDeleted){ // rowDeleted will return number of rows deleted
if(rowDeleted === 1){
console.log('Deleted successfully');
}
}, function(err){
console.log(err);
});
Daha fazla bilgi için bu bağlantıya göz atın http://docs.sequelizejs.com/en/latest/api/model/#destroyoptions-promiseinteger
Cevap #4
Sorunun hâlâ geçerli olup olmadığını bilmiyorum ama Sequelize belgelerinde şunları buldum.
User.destroy('`name` LIKE "J%"').success(function() {
// We just deleted all rows that have a name starting with "J"
})
http://sequelizejs.com/blog/state-of-v1-7-0
Umarım yardımcı olur!
Cevap #5
Yeni sürümde, bunun gibi bir şey deneyebilirsiniz
function (req,res) {
model.destroy({
where: {
id: req.params.id
}
})
.then(function (deletedRecord) {
if(deletedRecord === 1){
res.status(200).json({message:"Deleted successfully"});
}
else
{
res.status(404).json({message:"record not found"})
}
})
.catch(function (error){
res.status(500).json(error);
});
