在JavaScript中的for…in循环中动态存储新对象属性值

在JavaScript中的for…in循环中动态存储新对象属性值,javascript,node.js,express,Javascript,Node.js,Express,我有一个运行express的节点应用程序,我想避开传入请求主体属性上的撇号,但我不确定这是最好的方法 exports.p_edit = function(req, res) { var args = [ req.body.title.split("'").join("\\'"), req.files.thumbnail.name.split("'").join("\\'"), req.body.tags.split("'").join("

我有一个运行express的节点应用程序,我想避开传入请求主体属性上的撇号,但我不确定这是最好的方法

exports.p_edit = function(req, res) {

    var args = [
        req.body.title.split("'").join("\\'"),
        req.files.thumbnail.name.split("'").join("\\'"),
        req.body.tags.split("'").join("\\'"),
        req.body.topic.split("'").join("\\'"),
        req.body.preview.split("'").join("\\'"),
        req.body.markdown.split("'").join("\\'")
    ];
    // ...
    // Do other stuff
我知道我可以使用
for(prop in req.body)
循环来迭代所有请求正文属性,但是如何动态地将值重新分配给每个属性呢

例如,如果我这样做

for(prop in req.body) {
    prop.split("'").join("\\'");
}

然后引用
req.body.title
(或任何属性),则该值不变。类似地,如果我尝试像
req.body.prop=prop.split(“”).join(“\\”)那样分配它
(希望
req.body.prop
会随着每次迭代而动态变化)它只需将
prop
属性添加到
req.body
对象中。如何动态迭代和重新分配这些属性

如果我正确理解了您的需求,您只需将循环更改为使用括号表示法:

for(var prop in req.body) {
    if (req.body.hasOwnProperty(prop))
        req.body[prop] = req.body[prop].split("'").join("\\'");
}

jsiddle:

如果我正确理解您的需求,您只需要更改循环以使用括号表示法:

for(var prop in req.body) {
    if (req.body.hasOwnProperty(prop))
        req.body[prop] = req.body[prop].split("'").join("\\'");
}

JSIDLE:

req.body[prop]=req.body[prop].split(“”).join(“\\”)你为什么需要/想要逃离它们?通常情况下,只有当您(例如)将这些LIB传递到数据库或类似数据库时,您才需要这些LIB。在这种情况下,与需要转义的服务通信的LIB通常会提供更好的方法。@t.niese您建议怎么做?我在网上看到的大多数地方都只是建议用类似于我所做的事情来剥离它们。你在哪里使用需要转义
”的数据?如果不知道后来的用法或逃避它们的原因,就不可能说出。但在我的任何应用程序中,我都不需要手动执行此操作,因为相应的库以更可靠和更节省的方式涵盖了这一点。需要转义的库应该更好地知道正确转义的内容和方法,因此在普通的提供者中,应该使用这些功能而不是自己的代码。@t.niese我正在用这些值做各种事情,但它们确实存储在
mysql
db中。我使用的是mysql npm模块,但它本身并没有逃避它们。模块内是否有更可靠地清理输入的方法<代码>req.body[prop]=req.body[prop].split(“”).join(“\\”)你为什么需要/想要逃离它们?通常情况下,只有当您(例如)将这些LIB传递到数据库或类似数据库时,您才需要这些LIB。在这种情况下,与需要转义的服务通信的LIB通常会提供更好的方法。@t.niese您建议怎么做?我在网上看到的大多数地方都只是建议用类似于我所做的事情来剥离它们。你在哪里使用需要转义
”的数据?如果不知道后来的用法或逃避它们的原因,就不可能说出。但在我的任何应用程序中,我都不需要手动执行此操作,因为相应的库以更可靠和更节省的方式涵盖了这一点。需要转义的库应该更好地知道正确转义的内容和方法,因此在普通的提供者中,应该使用这些功能而不是自己的代码。@t.niese我正在用这些值做各种事情,但它们确实存储在
mysql
db中。我使用的是mysql npm模块,但它本身并没有逃避它们。模块中是否有更可靠地清理输入的方法?添加hasOwnProperty检查如何?我想这是常识,即使问题中没有指定,也可以添加。我将更新我的答案。我不知道您可以在这里使用方括号表示法。谢谢添加hasOwnProperty检查怎么样?我想这已经足够常识了,即使问题中没有指定。我将更新我的答案。我不知道您可以在这里使用方括号表示法。谢谢