目前,我正在向Parse.com发送一些数据。一切正常,但是,如果是新用户,我想添加一行,如果是旧用户,我想更新当前表。
所以我需要做的是检查当前的Facebook ID(我正在使用的密钥)是否显示在fbid列中的任何位置,如果情况可能会更新它。
如何检查列中是否存在密钥?
另外,我正在使用C#/ Unity。
static void sendToParse()
{
ParseObject currentUser = new ParseObject("Game");
currentUser["name"] = fbname;
currentUser["email"] = fbemail;
currentUser["fbid"] = FB.UserId;
Task saveTask = currentUser.SaveAsync();
Debug.LogError("Sent to Parse");
}
答案 0 :(得分:2)
好的,我明白了。
首先,我检查表中是否有与当前ID匹配的Facebook ID,然后获取匹配数。
public static void getObjectID()
{
var query = ParseObject.GetQuery("IdealStunts")
.WhereEqualTo("fbid", FB.UserId);
query.FirstAsync().ContinueWith(t =>
{
ParseObject obj = t.Result;
objectID = obj.ObjectId;
Debug.LogError(objectID);
});
}
如果有任何与当前Facebook ID匹配的密钥,请不要执行任何操作。如果没有,只需添加新用户。
public static void sendToParse()
{
if (count != 0)
{
Debug.LogError("Already exists");
}
else
{
ParseObject currentUser = new ParseObject("IdealStunts");
currentUser["name"] = fbname;
currentUser["email"] = fbemail;
currentUser["fbid"] = FB.UserId;
Task saveTask = currentUser.SaveAsync();
Debug.LogError("New User");
}
}
您必须为sendToParse执行StartCoroutine,因此getObjectID有时间查看表。
这可能是一个糟糕的实现,但它确实有效。
答案 1 :(得分:1)
您需要做的是为fbid创建一个查询。如果查询返回一个对象,则更新它。如果没有,您创建一个新的。
我不熟悉C#,但这是Objective-C中的一个例子:
PFQuery *query = [PFQuery queryWithClassName:@"Yourclass]; // Name of your class in Parse
query.cachePolicy = kPFCachePolicyNetworkOnly;
[query whereKey:@"fbid" equalTo:theFBid]; // Variable containing the fb id
NSArray *users = [query findObjects];
self.currentFacebookUser = [users lastObject]; // Array should contain only 1 object
if (self.currentFacebookUser) { // Might have to test for NULL, but probably not
// Update the object and save it
} else {
// Create a new object
}