使用ES6模板字符串查询sql数据库

问题描述:

这是我的代码。 首先,我定义的用户表使用ES6模板字符串查询sql数据库

'use strict'; 
const db = require('../db'); 
const DataTypes = db.Sequelize; 

module.exports = db.define('user', { 
    firstName: { 
     type: DataTypes.STRING, 
     allowNull: false 
    }, 
    lastName: { 
     type: DataTypes.STRING, 
     allowNull: false 
    }, 
    number1: { 
     type: DataTypes.STRING 
    }, 
    number2: { 
     type: DataTypes.STRING 
    } 
}) 

在这里,我想通过一个数组来更新数字1和数字2,节省所有的数字

var arr = [1,2] 
User.findAll(req.body) 
.then(users => { 
    for(let i=0; i<arr.length; i++){ 
     users.update({ 
      'number'+ (i+1): '2', 
     }) 
    } 
}) 

因此,这给我一个语法错误,这意味着sequelize不认识到这部分'number'+ (i+1)

如果我使用像这样的模板字符串number${i+1},它仍然无法工作。

但是当我尝试“number1”,它的工作原理! 为什么?我该如何解决这个问题?

这不是Sequelize的问题,这是您的JavaScript语法的问题(因此语法错误)。

为了获得传递到users.update的对象的“动态”或“计算”键,您需要使用[]代替computed property names

users.update({ 
    [`number${i+1}`]: '2', 
    }) 
+0

它的工作原理!谢谢 – Paul