我是 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.display
和 myObject.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/