JSON中productImage路径反斜杠转正斜杠问题求助
解决productImage路径反斜杠替换失效的问题
嘿,看了你的代码和输出结果,问题很明确——你只是把doc.productImage直接赋值过去了,根本没调用replace方法来替换反斜杠呀!而且还要注意,JavaScript里反斜杠是转义字符,匹配原字符串里的单个\得用两个反斜杠(\\),还要加全局匹配修饰符g,不然只会替换第一个反斜杠。
直接修改你map里的返回对象就行,把productImage字段改成下面这样:
const response = { count: docs.length, products: docs.map(doc => { return { name: doc.name, price: doc.price, // 这里是关键:调用replace全局替换反斜杠 productImage: doc.productImage.replace(/\\/g, '/'), _id: doc._id, request: { type: "GET", url: url + "/products/" + doc._id } }; }) };
为什么这样能生效?
- 原字符串里的
uploads\\2018...其实在内存中是uploads\2018...(两个反斜杠是转义后的写法),所以正则/\\/g才能匹配到所有的单个反斜杠。 - 加
g修饰符是为了替换所有的反斜杠,而不是只替换第一个。
额外提醒
如果你的doc.productImage可能是null或者undefined,建议加个空值判断,避免调用replace时报错:
productImage: doc.productImage ? doc.productImage.replace(/\\/g, '/') : ''
这样修改后,你的输出里productImage路径就会变成uploads/2018-05-02T09-12-59.937Zahmet.jpg啦。
内容的提问来源于stack exchange,提问作者Ahmet Zeybek
相关产品推荐
相关产品推荐

