无法使用Node.JS将null值发送到MySQL数据库

时间:2017-09-07 22:04:55

标签: javascript mysql node.js null

我尝试使用Node.JS将null发送到我的MySQL数据库:

con.query("INSERT INTO Routes (routeTrigger) VALUES ( " + null + " )", {title: 'test'}, function(err, result) {
    if (err) throw err;
});

但在查看数据库时,更新后的值为'null'。数据库的NULL应该是 NULL 。如果我发送资金NULL,那甚至不起作用(在Node.JS中)。如果我发送'NULL',它会发送字符串" NULL",而不是数据库的NULL

6 个答案:

答案 0 :(得分:4)

JavaScript null与SQL Null不同。您希望(在您的情况下,使用原始SQL字符串)一个字符串:

con.query("INSERT INTO Routes (routeTrigger) VALUES ( null )", {title: 'test'}, function(err, result) {
    if (err) throw err;
});

但请注意,这会创建一个完全null的行。这是可能的,但它不太可能你想要的。

你究竟想做什么?

答案 1 :(得分:1)

如果要分配 NULL 值在 SQL 表中,您可以采用不同的方式。

您可以调整字段(列),而不是分配 NULL ,以便默认值(当没有赋值时)为: NULL

现在,当您插入新行时,只需不为该字段分配任何值

示例:

让我们说这个表的结构如下:

<强> MyTable的

  

id :自动增量; ...

     

名称:文字

     

网址:文字; default = NULL

然后你可以这样做:

INSERT INTO Mytable ( name ) VALUES ( "Joe" );

当您忽略网址信息时,它会设置为 NULL

答案 2 :(得分:0)

这用于使用Node.js从JSON进行PostgresQL表迁移;可能会有所帮助。检查来自您的源的值,如果该列不存在该值,请在双引号中使用“ NULL”。 EG,如果是JSON:

const makeVal = (val)=>{ if(val === undefined) { return "NULL" } else { return "'" + JSON.stringify(val).replace(/'/g, "''") + "'" } }

有关完整实现,请参见此要旨https://gist.github.com/foureyedraven/ca90a7dcbfd0918c153b0c91ec9317c5

答案 3 :(得分:0)

使用节点mysql package,我可以通过执行以下操作插入空值:

let myValue = null;

请注意列配置:

'myValue' varchar(15) DEFAULT NULL

答案 4 :(得分:0)

有效

if(my_var != null){ my_var = '"'+my_var+'"';}`                             
else{ my_var = "NULL";}         
connection.query('insert into my_table(my_var) values('+my_var+')',(error, 
results)=>{
 if (error) { throw error}
 connection.end();})`

答案 5 :(得分:0)

要使用nodejs在mysql中传递空值,我们需要一种不同的查询实现。

conn.query({
    sql: `INSERT INTO project values(?, ?, ?, ?);`,
    values: [projectId, name, startDate, endDate]}, (error, results) => {
        if (error) {
            console.log("Error executing sql: ", error.message);
            return res.send(error);
        }
    });
});

官方网站说:“未定义/ null转换为NULL” 而且有效。

使用上述语法来触发查询。