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);
        });

İlgili makaleler