我在parse的云代码中有简单的javascript来收集电子邮件地址列表,我将这些地址添加到cloudcode中的httprequest中以发送到mandrill。
但是,http 请求似乎有额外的反斜杠 (\),导致 mandrill 拒绝请求。尽管如此,然后我在云代码的警报框中打印相同的字符串,它完美地打印了它。我已经将httprequest日志与硬编码的电子邮件列表请求(该请求成功)进行了比较,因此我知道这些额外的字符。
我真的不确定发生了什么,任何指示将不胜感激。
我有我的代码片段和部分日志,如下所示:
用于在字符串中收集电子邮件的云代码:..
var query1 = new Parse.Query(Parse.User);
query1.equalTo("emailVerified", true);
query1.find({
success: function (object)
{
var emaillink;
for (var i=0;i<object.length;i++)
{
var testresult=object[i];
if(i==0)
{
emaillink="'"+testresult.get("email")+"', "name" : '"+testresult.get("username")+"', "type" : 'to' },";
}
else
{
emaillink=emaillink+"{ "email" : '"+testresult.get("email")+"', "name" : '"+testresult.get("username")+"', "type" : 'to' },"
}
}
emaillink = emaillink.substring(0, emaillink.length - 2);
alert(emaillink);
Parse.Cloud.httpRequest({...
Cloudcode 将这些电子邮件添加到 ManDrill 的 HTTP请求格式:
...
"to": [
{ "email": emaillink
}
]
..
警报日志:
##################################################
# Alert #
##################################################
# #
# 'abc@gmail.com', "name" : 'abc 1 #
# ', "type" : 'to' },{ "email" : 'abcdefghijklnm #
# 101@gmail.com', "name" : 'abcdefgh', "type" : #
# 'to' },{ "email" : 'qwertyiopau@yahoo.com', "n #
# ame" : 'qwertyiop', "type" : 'to' #
# #
# [ OK ] #
# #
##################################################
登录 httpRequest 的云代码:
..."text":"[{"email":"'abc@gmail.com', \"name\" : 'abc 1', \"type\" : 'to' },{ \"email\" : 'abcdefghijklnm101@gmail.com', \"name\" : 'abcdefghijklnm', \"type\" : 'to' },{ \"email\" : 'abcdefghijklnm@yahoo.in', \"name\" : 'abcdefghijklnm', \"type\" : 'to'","status":"invalid","_id":"18523fc4a3d24a1398c303972af47cd8","reject_reason":null}]","data":[{"email":"'abc@gmail.com', "name" : 'abc', "type" : 'to' },{ "email" : 'abcdefghijklnm101@gmail.com', "name" : 'abcdefghijklnm', "type" : 'to' },{ "email" : 'abcdefghijklnm@y.in', "name" : 'abcdefghijklnm', "type" : 'to'","status":"invalid","_id":"18523fc4a3d24a1398c303972af47cd8","reject_reason":null}],"buffer":{"0":91....
请忽略电子邮件,我已经用一些随机的电子邮件值替换了实际的电子邮件。这些值是正确的,我已经检查过了。
只是这些额外的\我无法解释。任何帮助都非常感谢。谢谢
您没有以正确的方式构建阵列。以下是您的案例的示例:
...
var emaillink = [] // Initialize an empty array;
for (var i=0;i<object.length;i++)
{
var testresult = object[i];
emaillink.push({ // We push each email in our array
email: testresult.get("email"),
name: testresult.get("username"),
type: "to"
})
}
...
这就是构建 JSON 对象的方式,无需创建字符串。如果你想获取json数组的字符串,你只需要做:
emaillink.toString();
所以你只需要把这个对象传递给你的httpRequest。你可能不必做一个'toString()'只是传递对象,httpRequest会字符串化它。
为了完全回答您的问题,额外的"\"是转义字符。你使用'\'来转义字符串中的'"',当发送你的字符串httpRequest时,你的字符也转义了你的字符。这就是为什么它会添加一些"\"来转义你的"\"。