2016-12-29 5 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 
    } 
}) 

Здесь я хочу обновить number1 и number2 массивом, который сохраняет все номера

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}, она по-прежнему не может работать.

но когда я попробую «номер1», он работает! Почему? и как я могу это исправить?

ответ

0

Это не проблема с Sequelize, это проблема с вашим синтаксисом JavaScript (следовательно, синтаксическая ошибка).

Для того, чтобы получить «динамический» или «вычисленный» ключ для объекта, который вы передаете users.update, вам необходимо использовать [] для computed property names.

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

Это работает !! благодаря – Paul