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

时间:2016-12-29 16:25:27

标签: node.js ecmascript-6 sequelize.js

这是我的代码。 首先我定义了用户表

<?php
$apiKey="yourAPIkey";
include_once 'vendor/autoload.php';
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey($apiKey);
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'SheetID';
$range = 'A1:B';
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();
if (count($values) == 0) {
  print "No data found.\n";
} else {
  print "Name, Major:\n";
  foreach ($values as $row) {
    printf("<p>%s, %s</p>", $row[0], $row[1]);
  }
}  
?>

这里我想用一个保存所有数字的数组更新number1和number2

'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
    }
})

所以这给我一个语法错误,这意味着sequelize不会识别这部分var arr = [1,2] User.findAll(req.body) .then(users => { for(let i=0; i<arr.length; i++){ users.update({ 'number'+ (i+1): '2', }) } })

如果我使用像'number'+ (i+1)这样的模板字符串,它仍然无法正常工作。

但是当我尝试&#34; number1&#34;时,它有效! 为什么?以及如何解决此问题?

1 个答案:

答案 0 :(得分:0)

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

为了得到一个动态的&#34;或&#34;计算&#34;您传递给users.update的对象的密钥,您需要[]使用computed property names

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