2014-11-12 8 views
6

में सॉफ्ट डिलीट को पूर्ववत करने के लिए कैसे करें मैं अपने node.js प्रोजेक्ट में पैरानोइड मोड में Sequelize.js का उपयोग कर रहा हूं और जबकि सॉफ्ट डिलीशन डेटा खोजने और हटाने में अपेक्षित काम करता है, मुझे एक रास्ता खोजने में परेशानी हो रही है मुलायम हटाए गए पंक्तियों को हटाने के लिए।Sequelize.js

मैं जानता हूँ कि मैं प्रश्न में समझाए का उपयोग द्वारा हटा पंक्तियों प्राप्त कर सकते हैं docs

Model.findAll({paranoid: false, where: {deletedAt: {ne: null}}}) 

लेकिन पागल: झूठी उपलब्ध जब updating नहीं है।

सीक्वेलिज़ में मुलायम हटाए गए पंक्तियों को भी हटा रहा है या क्या मुझे कुछ याद आ रही है?

उत्तर

10

आप instance.setDataValue('deletedAt', null) उपयोग कर सकते हैं:

var Bluebird = require('bluebird'); 
var models = require('./models'); 

models.sequelize.sync({ force: true }) 
.then(function() { 
    return models.User.create({ name: 'user' }) 
}) 
.then(function (user) { 
    return user.destroy() 
}) 
.then(function() { 
    return models.sequelize.models.User.findAll({ paranoid: false }); 
}) 
.then(function (users) { 
    var user = users[0]; 
    user.setDataValue('deletedAt', null); 
    return user.save({ paranoid: false }); 
}).then(function() { 
    return models.sequelize.models.User.findAll(); 
}).then(function (users) { 
    console.log(users[0]); 
}); 

कृपया ध्यान दें कि इस स्निपेट का उपयोग करता Sequelize @ v2

+0

धन्यवाद! यह पूरी तरह से काम किया! – teemup

0

मैं सहेजने के बजाय इंस्टेंस की अद्यतन विधि का उपयोग करने का प्रयास कर रहा था। यह केवल अद्यतन डेटा में deletedAt वैल्यू सेट null जोड़ते समय ही काम करता था।

user.setDataValue('deletedAt', null); 
user.update({deletedAt:null}, callback); 

इस मामले में अद्यतन में पैरानोइड विकल्प आवश्यक नहीं है।

संबंधित मुद्दे