#node.js #postgresql #migration #sequelize.js
#node.js #postgresql #миграция #sequelize.js
Вопрос:
Я добавил новый столбец в свою старую таблицу в базе данных postgresql с помощью миграции и присвоил этому столбцу значение по умолчанию.
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
return Promise.all([
queryInterface.addColumn(
'notifications', // table name
'flag', // new field name
{
type: Sequelize.INTEGER,
defaultValue: 0,
allowNull: false,
},
),
]);
},
down: async (queryInterface, Sequelize) => {
}
};
Теперь я хочу перейти к конкретным значениям этого столбца. Как я могу это сделать с помощью перехватов или сервиса? Я новичок в node.js я буду очень признателен вам за помощь.
Мой notifications.model.js
const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;
module.exports = function (app) {
const sequelizeClient = app.get('sequelizeClient');
const notifications = sequelizeClient.define('notifications', {
senderId: {
type: DataTypes.INTEGER,
allowNull: false
},
recipientId: {
type: DataTypes.INTEGER,
allowNull: false
},
notificationtype: {
type: DataTypes.STRING,
allowNull: false
},
postId:{
type:DataTypes.INTEGER,
allowNull:true
},
conversationId:{
type:DataTypes.INTEGER,
allowNull:true
}
},
);
return notifications;
};
Это мои уведомления.hooks.js .
Что я должен добавить, чтобы обновить флаг до 1?
const { authenticate } = require('@feathersjs/authentication').hooks;
const authHooks = require('feathers-authentication-hooks');
const { fastJoin, discard, disallow } = require('feathers-hooks-common');
const acquireNotification = require('../../hooks/notifications/acquire_notification');
const relateWithUser = require('../../hooks/notifications/relate_with_users');
const reverse = require('../../hooks/common/reverse');
module.exports = {
before: {
all: [
authenticate('jwt'),
reverse(),
],
find: [
acquireNotification(),
reverse()
],
get: [
acquireNotification()
],
create: [
authHooks.associateCurrentUser({
idField: 'id',
as: 'senderId'
}),
],
update: [
],
patch: [
],
remove: [
]
},
after: {
all: [],
find: [
fastJoin(relateWithUser),
],
get: [],
create: [
fastJoin(relateWithUser),
],
update: [],
patch: [],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
};
Комментарии:
1. Вы хотите обновить некоторые записи и установить
flag
значение поля для этих записей на указанное значение?2. Да, я пытаюсь это сделать :/
3. Вы определяете модели с помощью Sequelize? Если да, покажите их
4. Я редактирую свой вопрос, чтобы показать
Ответ №1:
Вам нужно добавить flag
столбец в notifications
модель:
flag:{
type:DataTypes.INTEGER,
allowNull:false
}
И затем вы можете обновить некоторые записи с определенными условиями, подобными этому:
await notifications.update({
flag: 1 // desired value
}, {
where: {
notificationtype: 'type' // indicate a desired condition here
}
});
Комментарии:
1. Спасибо за это, но я не могу добавить это в свои хуки, не могли бы вы еще раз проверить мой вопрос? Я добавил свой hooks.js