首页 > 解决方案 > 如何在javascript中将\"改回"?

问题描述

我是 Node.js 和 MySQL 的初学者,所以请耐心等待。下面的代码在我的本地主机服务器的路由中,最初保存时数据库很好,但是当我尝试通过将旧的存储在新数组中来检索它并将其推回我的数据库时,它会更改“”到 \”\”。我想要的是它仍然是“”。

我尝试在网上寻找将格式化字符串引号从 \"\" 更改回 "" 的方法,但无济于事,我还尝试将分数从字符串格式化回数字,但我意识到即使我这样做了也就是说,当它存储在数据库中时,它仍然会是一个字符串,当我检索它时,它会是一样的。

    let { score } = req.body;
    let { date } = req.body;
    score = Number(score);

    var score_date = [score, date];

    wMissing.findOne({
        raw : true
    }).then((missing) => {
        var sessionID = missing.testSessionID;

        registerPatient.findOne({
            where: {
                nric : sessionID
            },
            raw : true
        }).then((patient) => {
            var height = patient.height;
            height = height / 100
            var weight = patient.weight;
            var bmiVar = (weight / (height * height)).toFixed(2);


            // *This is where my problem starts*

            if (missing.wMissingScore == null){
                var newArray = score_date;
            } else {
                var newArray = [missing.wMissingScore];
                newArray.push(score_date);
            }

            newArray = JSON.stringify(newArray);

            wMissing.update({
                bmi: bmiVar,
                wMissingScore: newArray,
                name: patient.fullname,
                nric: sessionID,
                datePlayed: date
            }, {
                where: { 
                    nric: sessionID
                }
            }).then(() => {
                res.redirect('workoutDiets');
            }).catch(err => console.log(err));

预期的输出应该是[["2","24/7/2019"],["3","24/7/2019"]]

但相反,我得到["[\"2\",\"24/7/2019\"]",["3","24/7/2019"]]

我仍然不知道有任何方法可以将 \"\" 改回 "" 。谁能帮我改进我的代码?

标签: javascriptmysqlarraysnode.js

解决方案


实际上,发生的事情是数组的第一个元素被存储为一个字符串,如果你仔细观察,第二个元素被正确地写为一个字符串数组。

问题是第一个元素,你有一个特殊情况。

如果我理解正确 ´´´missing.wMissingScore´´´ 是一个纯字符串

你可以做的是:

'''

if (missing.wMissingScore == null){
                var newArray = score_date;
            } else {
                var formatedMissingScore= missing.wMissingScore.replace("\"", "").replace("[", "").replace("]", "").split(",");
                var newArray = [formatedMissingScore];
                newArray.push(score_date);
            }

'''

这样,您就可以格式化您的第一个元素字符串,使其不再是文本,并且应该与您想要获取的内容相匹配。


推荐阅读