Parse.com - 表和用户表之间的关系

时间:2016-01-21 20:51:39

标签: javascript parse-platform parse-javascript-sdk

我对解析概念很陌生,我一直都是经典的关系数据库开发人员,如果我犯了基本错误,对不起。

主要想法是开发一个组件,允许用户存储一些仅分配给他的折扣代码,其中包含一些基本属性(大约100个)。

到目前为止,我已经创建了一个名为Codes的类,并且在标准User上,我设置了一个名为Codes的新字段,它与Codes对象有关。我正在使用Javascript SDK,因为它将成为移动应用。

首先,这个数据模型是最适合我的目的还是推荐给我任何其他选择?

在我的第一个POC上,我创建了一个简单的应用程序来注册用户,创建一个代码并将其分配给他,但它不起作用,我没有收到任何错误消息。使用解析WUI,我可以看到User对象是正确创建的,而且Code代码但是点击User的关系并没有显示链接的任何代码。我做错了吗?

这是我的代码

 success: function(user) {
    $scope.currentUser = user;

    var Code = Parse.Object.extend("Codes");
    var myCode = new Code();
    myCode.set("text", "This is a dummy test");
    myCode.save();

    var relation = user.relation("Codes");
    relation.add(myCode);
    user.save();
    $scope.$apply();
  }

提前感谢您的帮助

此致

1 个答案:

答案 0 :(得分:0)

首先,这个数据模型是最适合我的目的,还是推荐给我任何其他选择? 答:您使用的是最适合多对多关系的关系模型。它应该适合您的用例。您也可以使用指针模型。这样,您不需要在User表上创建任何内容,而是在Code表上创建一个“Pointer”类型的字段,并指向User。您可以将字段命名为“所有者”或类似名称。指针模型适用于多对一关系。

您的代码存在的问题是,当您将代码保存到用户时,代码仍未成功创建。如您所知,javascript SDK是异步的,因此在myCode.save()完成之前将调用user.save()。我认为这就是你没有在Code表中看到实际代码的原因。你应该使用promise。请继续查看其网站上的承诺文档。供您参考,您的代码可以修改如下:

success: function(user) {
    $scope.currentUser = user;
    var Code = Parse.Object.extend("Codes");
    var myCode = new Code();
    myCode.set("text", "This is a dummy test");
    myCode.save().then(function(createdCode){
        var relation = user.relation("Codes");
        relation.add(createdCode);
        user.save();
        $scope.$apply();
    }, function(error){
        // handle error here.
    });
}