2016-12-29 40 views
0

這是我的代碼。 首先,我定義的用戶表使用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」,它的工作原理! 爲什麼?我該如何解決這個問題?

回答

0

這不是Sequelize的問題,這是您的JavaScript語法的問題(因此語法錯誤)。

爲了獲得傳遞到users.update的對象的「動態」或「計算」鍵,您需要使用[]代替computed property names

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

它的工作原理!謝謝 – Paul