【发布时间】:2016-01-31 23:02:28
【问题描述】:
我对 mysql 还很陌生,我正在尝试使用node-mysql 在节点中启动并运行它。我创建了一个简单的表格,如下所示:
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 来做到这一点对象解析?
如果您发现我可以改进的其他内容,请随时扩展您的答案。我更大的目标是学习在节点中创建健壮、安全和简洁的 mysql 插入的最佳方法。
【问题讨论】:
-
您正在组合
INSERT和UPDATE语句。
标签: mysql node.js node-mysql