我对解析概念很陌生,我一直都是经典的关系数据库开发人员,如果我犯了基本错误,对不起。
主要想法是开发一个组件,允许用户存储一些仅分配给他的折扣代码,其中包含一些基本属性(大约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();
}
提前感谢您的帮助
此致
答案 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.
});
}