Saya membuat RESTful API dengan NodeJS, express, express-resource, dan Sequelize yang digunakan untuk mengelola set data yang disimpan dalam database MySQL.
Saya mencoba mencari cara untuk mengupdate record dengan benar menggunakan Sequelize.
Saya membuat model:
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
}
})
}
Kemudian, di pengontrol sumber daya saya, saya menetapkan tindakan pembaruan.
Di sini saya ingin dapat memperbarui catatan di mana id cocok dengan req.params
variabel.
Pertama saya membangun model dan kemudian saya menggunakan updateAttributes
metode untuk memperbarui catatan.
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')
}
Sekarang, ini tidak benar-benar menghasilkan kueri pembaruan seperti yang saya harapkan.
Sebagai gantinya, kueri sisipkan dijalankan:
INSERT INTO `Locales`(`id`, `locale`, `createdAt`, `updatedAt`, `visible`)
VALUES ('1', 'us', '2011-11-16 05:26:09', '2011-11-16 05:26:15', 1)
Jadi pertanyaan saya adalah: Apa cara yang tepat untuk mengupdate record menggunakan Sequelize ORM?
.success
ke.then