我正在尝试使用API
向Parse数据库中的Class添加一行我设法添加了行但是我注意到了' ACL& user__user'字段是空白的。
我的Request类看起来像这样:
public class AccountDataRequest
{
public string OrderNo { get; set; }
public string SiteName { get; set; }
public string CreditDebit { get; set; }
public int Amount { get; set; }
public int CreditBalance { get; set; }
}
我的功能看起来像这样:
public static AccountDataResponse AddTransaction(AccountDataRequest details)
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://api.parse.com/1/classes/AccountData");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.Headers.Add("X-Parse-Application-Id", "xxxxx");
httpWebRequest.Headers.Add("X-Parse-REST-API-Key", "xxxxx");
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(details);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return JsonConvert.DeserializeObject<AccountDataResponse>(result);
}
}
}
&#39; user__user&#39;链接到&#39; objectID(String)&#39;在mu用户类。
我已经尝试将其作为字符串添加到我的类中,但它会抛出并出错。
任何人都可以告诉我如何获得ACL和&#39; user__user&#39;请填好吗?
由于
更新
我已经知道Pointer是一个结构,所以修改了我的类如下:
public class AccountDataRequest
{
public string OrderNo { get; set; }
public string SiteName { get; set; }
public string CreditDebit { get; set; }
public double Amount { get; set; }
public int CreditBalance { get; set; }
public Pointer Pointer { get; set; }
}
public class Pointer
{
public string __type { get; set; }
public string className { get; set; }
public string objectId { get; set; }
}
因此,当我现在使用以下内容调用API时:
POST https://api.parse.com/1/classes/AccountData HTTP/1.1
Content-Type: application/json
X-Parse-Application-Id: xxxxx
X-Parse-REST-API-Key: xxxxx
Host: api.parse.com
Content-Length: 163
Expect: 100-continue
Connection: Keep-Alive
{"OrderNo":"9","SiteName":"Trev","CreditDebit":"Debit","Amount":1.0,"CreditBalance":999,"Pointer":{"__type":"Pointer","className":"AccountData","objectId":"fvJ8jPjyjx"}}
此调用不会产生错误并返回createddate和objectid但用户(指针&lt; __ User&gt;仍为空。
我也尝试将className更改为&#34; __ User&#34; API响应:
{"code":111,"error":"invalid type for key Pointer, expected *AccountData, but got *_User"}
这就是我的AccountData类
中空列的样子
我正在尝试将其绑定到User表中的objectId:
有人可以看到有什么问题吗?
答案 0 :(得分:1)
如果Parse中的列被定义为_User的指针,那么您需要将适当的结构传递给Parse而不仅仅是objectId。看一下Parse REST SDK的Data Types section。它有一个段落和示例,用于通过API传递指针结构。
同样,对于ACL,您还需要指定该结构。它的详细信息位于SDK的security docs。
在这两种情况下,如果要使用object-&gt; JSON转换器,则需要构建一个适当表示该结构的对象。指针比ACL更容易,因为前者具有预定义的键,而后者使用动态键名称(例如objectIds和角色名称)。
已更新,以包含课程定义
public class AccountDataRequest
{
public string OrderNo { get; set; }
public string SiteName { get; set; }
public string CreditDebit { get; set; }
public double Amount { get; set; }
public int CreditBalance { get; set; }
public Pointer user { get; set; }
}