mysql - 如果在插入时为空,node-mysql 使用默认值

标签 mysql node.js node-mysql

我是 mysql 的新手,我正在尝试使用 node-mysql 在 Node 中启动并运行它.我创建了一个像这样的简单表格:

CREATE TABLE myTable (
    id SERIAL,
    display BOOLEAN NOT NULL DEFAULT 1,
    active BOOLEAN NOT NULL DEFAULT 0
) DEFAULT CHARSET utf8 COLLATE utf8_bin;

我像这样插入行:

db.query('INSERT INTO myTable SET ?', {
    display: myObject.display,
    active: myObject.active
}, callback);

正如文档所说,node-mysql 将我传递的对象转换为键值对。如果同时定义了 myObject.displaymyObject.active,这会很好用。如果一个或两个不是,node-mysql 会尝试将 NULL 插入到列中,这是不允许的。我打算在这种情况下使用默认值,但它会抛出有关 NULL 值的错误。所以我的问题是:

1) 在创建表时是否使用一些特殊的语法,当给出空值时将使用默认值,或者 2) 是否有一些优雅的方法可以使用不涉及一堆的 node-mysql 来执行此操作对象解析?

如果您看到其他我可以改进的地方,请随时扩展您的答案。我更大的目标是学习在 Node 中创建健壮、安全和简洁的 mysql 插入的最佳方法。

最佳答案

您的 SQL 语法对于 INSERT 语句不正确。

插入

INSERT into TableName(id, display, active)
VALUES (?, ?, ?)

更新

UPDATE TableName SET display = ?
WHERE id = ?

然后您将使用 db.query() 填充 ? 占位符并传入您的参数。

关于mysql - 如果在插入时为空,node-mysql 使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454302/

相关文章:

c# - 通过 SQL 将属性存储在 Arraylist 中并显示在文本框中

php - 语法错误 : Unexpected token < at Object. 解析( native )

mysql - node.js - 如何扩展 mysql 结果对象

javascript - 通过 Node.js 使用未知数量的空参数进行 MySQL 查询

php - 在搜索栏中禁用以前搜索过的术语建议

php - 在 Laravel 中实现多图像上传系统时遇到问题

node.js - 将未知数量的参数传递给 NodeJS 路由

javascript - 类型错误 : Cannot read property 'title' of null

node.js - 安装reactjs时出错: Error unexpected end of JSON input while parsing near

mysql - 无法删除 UPDATE 查询中的 SQL 语法