我已经使用DynamoDB SDK格式化了要在putItem调用中使用的字符串。这个长字符串(我想添加的项目有很多信息(存储在一个变量中,我应该能够在dynamoDdb.putItem()
的Item {}
部分中使用它。
然而,当实际处理变量时,会添加额外的字符,导致Item {}
的格式不正确。
见下文:
itemToAdd = JSON.stringify(marshalled2, null,2)
newString = itemToAdd.slice(4, itemToAdd.length-1)
correct = newString.replaceAll(" ", '');
correct2 = correct.replaceAll("n", "")
//console.log(newString)
var params = {
TableName: "Music",
Item: {
correct2
}
}
dynamodb.putItem(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", data);
}
});
我的问题是,字符串correct2
中没有斜杠或n
,因为我之前已经删除了它们。然而,当字符串correct2与params对象一起使用时,额外的黑斜杠已经添加到字符串中,扰乱了格式。
correct2中包含的字符串示例如下:
"AlbumData":{"S":"2B5C1828-6077-4ED1-89AD-13602A7AC08D"},"label":{"S":"EvolutionMediaMusic"},"Album":{"S":"BleakDrama"},"albumCode":{"S":"EMM101"},"releaseDate":{"S":"21/06/2016"},"description":{"S":"Contemporarynoircrimedrama:coldandforebodingcueswithtwistedsyntheticatmospheresandpulsingrhythms."},"credits":{"S":""},"tracks":{"L":[{"M":{"id":{"S":"984CA56C-3FA8-4F49-9C9E-3F96C237EE7E"},"trackNo":{"S":"1"},"albumCode":{"S":"EMM101"},"albumName":{"S":"BleakDrama"},"lengthOfTrack":{"S":"02:30"}, //more fields would go here
如果我复制上面的文本并将其插入变量所在的位置,那么代码就没有问题。使用javascript调试控制台,变量correct2被设置为以上值params.Item = "AlbumData":{"S":"2B5C1828-6077-4ED1-89AD-13602A7AC08D"},"label":{"S":"EvolutionMediaMusic"},"Album":{"S":"BleakDrama"}, // and the patten repeats
是什么导致correct2和params之间的差异。项目我希望他们也一样。
伙计,没关系,放松一下。它被称为逃逸
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#escape_sequences
https://www.geeksforgeeks.org/how-to-use-escape-characters-to-correctly-log-quotes-in-a-string-using-javascript/