আমি নোডজেএস, এক্সপ্রেস, এক্সপ্রেস-রিসোর্স এবং সিকোলেজ সহ একটি রিসালফুল এপিআই তৈরি করছি যা মাইএসকিউএল ডাটাবেসে সঞ্চিত ডেটাসেট পরিচালনা করতে ব্যবহৃত হয়।
আমি সিকুইলাইজ ব্যবহার করে কীভাবে রেকর্ডটি সঠিকভাবে আপডেট করতে পারি তা জানার চেষ্টা করছি।
আমি একটি মডেল তৈরি:
module.exports = function (sequelize, DataTypes) {
return sequelize.define('Locale', {
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
},
locale: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
validate: {
len: 2
}
},
visible: {
type: DataTypes.BOOLEAN,
defaultValue: 1
}
})
}
তারপরে, আমার সংস্থান নিয়ামকটিতে, আমি একটি আপডেট ক্রিয়া সংজ্ঞায়িত করি।
এখানে আমি রেকর্ডটি আপডেট করতে সক্ষম হতে চাই যেখানে আইডি একটি req.params
ভেরিয়েবলের সাথে মেলে ।
প্রথমে আমি একটি মডেল তৈরি করি এবং তারপরে আমি updateAttributes
রেকর্ডটি আপডেট করার জন্য পদ্ধতিটি ব্যবহার করি ।
const Sequelize = require('sequelize')
const { dbconfig } = require('../config.js')
// Initialize database connection
const sequelize = new Sequelize(dbconfig.database, dbconfig.username, dbconfig.password)
// Locale model
const Locales = sequelize.import(__dirname + './models/Locale')
// Create schema if necessary
Locales.sync()
/**
* PUT /locale/:id
*/
exports.update = function (req, res) {
if (req.body.name) {
const loc = Locales.build()
loc.updateAttributes({
locale: req.body.name
})
.on('success', id => {
res.json({
success: true
}, 200)
})
.on('failure', error => {
throw new Error(error)
})
}
else
throw new Error('Data not provided')
}
এখন, এটি আসলে আমি যেমনটি প্রত্যাশা করতাম তেমন কোনও আপডেট কোয়েরি তৈরি করে না।
পরিবর্তে, একটি সন্নিবেশ ক্যোয়ারী কার্যকর করা হয়:
INSERT INTO `Locales`(`id`, `locale`, `createdAt`, `updatedAt`, `visible`)
VALUES ('1', 'us', '2011-11-16 05:26:09', '2011-11-16 05:26:15', 1)
সুতরাং আমার প্রশ্নটি: সিকুইলাইজ ওআরএম ব্যবহার করে কোনও রেকর্ড আপডেট করার সঠিক উপায় কী?
.success
যেতে হয়েছিল.then