Parse.com - 如果密钥存在,请更新

时间:2014-03-06 15:32:40

标签: c# if-statement unity3d parse-platform

目前,我正在向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");
    }

2 个答案:

答案 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
}