【问题标题】:Sequelize Append Value on UpdateSequelize 更新时附加值
【发布时间】:2021-04-27 20:23:58
【问题描述】:

我正在尝试使用 .update 方法将值附加到我的对象字段之一,但我当前的代码将字段 (organization.members) 中的值替换为在 post 方法期间该字段捕获的新值.我在文档中寻找一种附加值的方法(以逗号分隔,但我没有看到任何与将值附加到我的对象属性相关的内容。

这是我的路线:

var express = require('express');
var appRoutes   = express.Router();
var passport = require('passport');
var localStrategy = require('passport-local').Strategy;
var models = require('../models/db-index');

appRoutes.route('/settings')

    .get(function(req, res){
        models.Organization.find({
            where: {
                organizationId: req.user.organizationId
            }, attributes: ['organizationName','admin','members']
        }).then(function(organization){
            res.render('pages/app/settings.hbs',{
                user: req.user,
                organization: organization
            });
        })

    })

    .post(function(req, res, user){
        models.Organization.update({
            members: req.body.addMember
        },{ where: {
            organizationId: req.user.organizationId
        }}).then(function(){
            console.log("User added to Organization");
            res.redirect('/app/settings');
        });
    });

这是组织模型:

module.exports = function(sequelize, DataTypes) {

var Organization = sequelize.define('organization', {
    organizationId: {
        type: DataTypes.INTEGER,
        field: 'organization_id',
        autoIncrement: true,
        primaryKey: true
    },
    organizationName: {
        type: DataTypes.STRING,
        field: 'organization_name'
    },
    admin: DataTypes.STRING,
    members: DataTypes.STRING
},{
    freezeTableName: true,
    classMethods: {
        associate: function(db) {
            Organization.hasMany(db.User, {foreignKey: 'user_id'});
        },
    },
});

    return Organization;
}

这是表格:

<div class="row">
    <div class="col-md-8 col-md-offset-2">
        <div class="annotation-form">
            <h2>Add User</h2>
            <form action="/app/settings" method="post">
                <input name="addMember" type="text" value="">
                <button type="submit">Add User</button>
            </form>
            <h2><u>Additional Users</u></h2>
            {{#each organization}}
                <li>{{this.members}}</li>
            {{else}}
                <p>No additional users</p>
            {{/each}}
        </div>
    </div>
</div>

db-index.js:

var Sequelize = require('sequelize');
var path = require('path');
var config = require(path.resolve(__dirname, '..', '..','./config/config.js'));
var sequelize = new Sequelize(config.database, config.username, config.password, {
    host:'localhost',
    port:'3306',
    dialect: 'mysql'
});

sequelize.authenticate().then(function(err) {
    if (!!err) {
        console.log('Unable to connect to the database:', err)
    } else {
        console.log('Connection has been established successfully.')
    }
});

var db = {}

db.Organization = sequelize.import(__dirname + "/organization");

db.User = sequelize.import(__dirname + "/user");

db.Organization.associate(db);

db.sequelize = sequelize;
db.Sequelize = Sequelize;

sequelize.sync();

module.exports = db;

【问题讨论】:

    标签: express sequelize.js


    【解决方案1】:

    我遇到了类似的问题,在我的情况下,我使用的是 mySQL 并使用底层的 CONCAT 函数。 我不使用+ 连接字符串的原因是,如果您的字符串包含新行,您可能会收到 SQL 语法错误

     models.Organization.update({
                members:  Sequelize.fn('CONCAT', Sequelize.col("members"),req.body.addMember)
            },{ where: {
                organizationId: req.user.organizationId
            }}).then(function(){
                console.log("User added to Organization");
                res.redirect('/app/settings');
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-07
      • 2015-06-14
      • 1970-01-01
      • 2020-03-27
      • 2020-05-18
      • 2023-04-08
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多