错误:ER_INVALID_JSON_TEXT:JSON 文本无效:"Invalid value."列"._data"值中的位置 1。在节点 JS 中



我想使用节点js使用存储过程将JOSN数据/对象插入到mysql中。首先,我知道有一些类似的问题,但我试过了,但仍然没有得到结果。

这是我第一次使用存储过程和节点js,所以我有了表名test_data

测试数据

CREATE TABLE `test_data` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT NULL,
`address` VARCHAR(255) NULL DEFAULT NULL,
`city` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=2
;

这是存储过程insert_data:

insert_data
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_data`(
IN `_data` JSON
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare p_name varchar(255) default null;
declare p_address varchar(255) default null;
declare p_city varchar(255) default null;
set p_name= json_unquote(json_extract(_data, '$.name'));
set p_address= json_unquote(json_extract(_data, '$.address'));
set p_city= json_unquote(json_extract(_data, '$.city'));        
insert into test_data(name, address, city) values(p_name, p_address, p_city);
END

这是我的node js代码:

const con = require('./db/connection');
const _data = {
"name": "Ironman",
"address": "ani@gamil.com",
"city": "bhilai"
}
const sql = "CALL insert_data('"+_data +"')"
con.query(sql, _data,(error, result) => {
if(error){
return console.log("There is error in the query: " + error)
}
console.log(result)
}) 

错误

There is error in the query: Error: ER_INVALID_JSON_TEXT: Invalid JSON text: "Invalid value." at position 1 in value for column '._data'.

请帮帮我,我做错了什么?

感谢

在我看来,您实际上并没有传递JSON值?

const _data = {
"name": "Ironman",
"address": "ani@gamil.com",
"city": "bhilai"
};

上面是一个Javascript对象,而不是它的JSON表示。所以这里是

const sql = "CALL insert_data('"+_data +"')"

CCD_ 4的实际值将是事实上无效的CCD_。尝试将sql转储到控制台,以验证情况是否确实如此。

试用:

const sql = "CALL insert_data('"+ JSON.stringify(_data) +"')"

最新更新