【问题标题】:Stringify occurring before value of variables get placed在放置变量值之前发生字符串化
【发布时间】:2015-11-14 03:58:26
【问题描述】:

我用一些变量构建了一个字典。

我将其字符串化并将其作为 PUT 请求发送。

请求通过,但所有字段最终都填充了变量的名称(friendRequestfriendRequesterrequestedFriend)而不是它们的值!

Parse.Cloud.define("createChatRoom", function(request, response) {

  var friendRequest = request.params.friendRequestId.toString();
  var friendRequester = request.params.friendRequester.toString();
  var requestedFriend = request.params.requestedFriend.toString();

  var chatPayload = {}
  chatPayload["room"] = {friendRequest: true};
  chatPayload["members"] = {friendRequest: {friendRequester: true, requestedFriend: true}}

  (...)

  Parse.Cloud.httpRequest({
    url: 'https://myapp.firebaseIO.com/app' + '.json',
    headers: {'Content-Type': 'application/json'},
    method: 'PUT',
    params: {'auth': token},
    body: JSON.stringify(chatPayload)
  }).then(function(httpResponse) {
      response.success("Successfully created chat room!");
  },function(httpResponse) {
      response.error("failed to create chat room" + httpResponse.text)
  })
})

我做错了什么?

【问题讨论】:

  • 您是否尝试过在您的 params 属性中将 Content-Type 作为 'application/json' 传递?您正在使用的 http 请求客户端可能默认为其他内容。
  • 首先,chatPayload.roomchatPayload.members 应该使用点语法。其次,您应该使用x.toString() 而不是String( x ) 来显式转换为字符串。
  • @PitaJ gotcha,对这个问题有什么想法吗?
  • @CaptainAdams 有什么想法吗?
  • 为什么不在这里尝试关注点分离,首先使用函数构造对象,并在创建对象后通过回调启动 Ajax 调用?

标签: javascript json parse-platform firebase stringify


【解决方案1】:

回答我的问题:

似乎是stringifying 甚至变量名,因为作为键,它们没有被声明。

使用索引器单独声明每个键对我有用,但它显得不必要地冗长。一定有更简洁的方式...

  var chatPayload = {};
  chatPayload.room = {};
  chatPayload.room[friendRequest] = true;

  chatPayload.members = {};
  chatPayload.members[friendRequest] = {};
  chatPayload.members[friendRequest][friendRequester] = true
  chatPayload.members[friendRequest][requestedFriend] = true 

【讨论】:

    猜你喜欢
    • 2015-06-06
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 2018-05-07
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多