express - Sequelize 在更新时追加值

标签 express sequelize.js

我正在尝试使用 .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>

数据库索引.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;

最佳答案

我有一个类似的问题,在我的例子中,我使用的是 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');
        });

关于express - Sequelize 在更新时追加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34757234/

相关文章:

javascript - "Parse Error: Header overflow"Node.js GET 请求期间

javascript - 如何使用 Nodejs 重定向到另一个页面,例如 google?

node.js - Puppeteer 与 Express Router Node JS 的并行性。如何在保持并发的情况下在路由之间传递页面

node.js - 有没有办法使用 npm Sequelize 向 SQL Server 插入超过 150K 的记录?

javascript - Node.js 拦截 Promise 并阐述 Response

jquery - 将数据从node.js附加到现有的html

node.js - 如何使用 Sequelize 提取包含特定日期的行?

node.js - id 不能在 graphQL where 子句中使用?

node.js - 我的数据库未在 Sequelize 中更新

sequelize.js - 无法在 Sequelize Hook 中保存