exports.createTaskDataForNewDay = async function(values) { try { console.log("values", JSON.stringify(values)) let pool = await CreatePool() //[timestamp , requiredTimes , reward , difficulty ,taskId , uid , csn] let query = "update userTaskData set timestamp = ?,requiredTimes=?,timesCompleted=0,reward=?,difficulty=?,state=1,taskId=?,replacedF=0,replacedC=0 where uid =? and suitCase = ?" let resp = await pool.query(query, [values]) if (resp.changedRows > 0) { return resp } else return { code: 400, mesage: "Could not insert data ! please try again or check syntax" } } catch (error) { console.error(error) return { code: 500, message: error.message } } }
La "valeur" transmise à la fonction est un tableau de tableaux. Chaque élément contient des données d'espace réservé pour une ligne différente que je souhaite mettre à jour. Mais j'obtiens une erreur qui est Parse Error - Il y a un problème avec la syntaxe et la requête enregistrée est -
sql: `update userTaskData set timestamp = (1686124176992, 1, '{\"t\":\"c\",\"v\":1000}', 1, 't1', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 3, '{\"t\":\"g\",\"v\":10}', 1, 't9', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 5, '{\"t\":\"c\",\"v\":4000}', 2, 't17', '21GGZzSudOdUjKXcbVQHtFtTK772', 1), (1686124176992, 3, '{\"t\":\"c\",\"v\":1000}', 3, 't21', '21GGZzSudOdUjKXcbVQHtFtTK772', 1),requiredTimes=?,timesCompleted=0,reward=?,difficulty=?,state=1,taskId=?,replacedF=0,replacedC=0 where uid =? and suitCase = ?
Il place tous les éléments dans le premier espace réservé. Cela fonctionne bien pour les requêtes d'insertion. S'il vous plaît, dites-moi ce que je fais de mal.
Peut-être que "value" est déjà un tableau et n'a pas besoin d'être enveloppé dans un autre tableau. Vous pouvez le transmettre directement de la manière suivante :
Laissez resp = waitpool.query(requête, valeur);
mysqljs/mysql
模块不支持通过objects
或arrays
进行批量记录,用于UPDATE
方法与您熟悉的INSERT
方法相同。您所想象的甚至不是 MySQL 的本机功能并且最多只能通过如果您想使用实际的UPDATE
方法,请切换CASE
.Cela vous laisse deux options :
Option 1
Tant que votre table et les données fournies pour la mise à jour contiennent des clés uniques, vous pouvez utiliser INSERT INTO table_name SET ? Concernant les mises à jour de clés en double...
Option 2
Si vous n'avez pas de champs à clé unique et de valeurs correspondantes dans votre requête pour une table donnée, vous devez construire la requête en itérant sur les entrées afin de vous retrouver avec une collection de chaînes contenant autant de
.comme vous souhaitez mettre à jour
的字符串集合更新
您将拥有的查询 - 或 - 通过构建利用CASE
Aura une requête - ou - en construisant une requête qui profite de la conditionCASE
Vous pouvez voir quelques exemples ici : Comment créer des instructions d'insertion dynamique basées sur le corps POST
🎜