错误:ER_INVALID_JSON_TEXT: Invalid JSON text: Invalid JSON text: ER_INVALID_JSON_TEXT:无效的JSON文本。"无效值。"在列'._data'值的第1位。IN NODE JS

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

这是我第一次使用存储过程和node js,所以我的表名是 “JOSN”。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)
}) 

ERROR

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 +"')"

实际值 sql 将是 "CALL insert_data('[object Object]')" 这其实是无效的。试着转储 sql 来验证是否真的如此。

试着用:

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

给TA打赏
共{{data.count}}人
人已打赏
解决方案

未初始化的常量 Preferences::InstanceMethods::Preference

2022-5-12 3:00:21

解决方案

可作为实例方法调用?

2022-5-12 3:00:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索