我最近开始使用angular作为前端代码进行编码,并计划使用loopback(www.loopback.io)作为我的后端(我的存储使用mongodb)。
现在,作为一个基本想法,我只是创建一个登录表单并注册表单,并将从那里继续。然而,我似乎无法使我的模型正确,特别是它们之间的关系。
我想要一个基本用户名/密码的用户模型,以及一个人模型,我可以存储更多信息,如名字,姓氏等。
我目前正在使用开箱即用的“默认”用户模型,并创建了具有所需属性的人员模型
然而,我无法理解的是两者之间的联系(一对一关系,所以HasOne关系)。
这些是我的模特:
user.json
{
"name": "user",
"base": "User",
"idInjection": true,
"properties": {},
"validations": [],
"relations": {
"person": {
"type": "hasOne",
"model": "Person",
"foreignKey": "id"
}
},
"acls": [],
"methods": []
}
person.json
{
"name": "Person",
"plural": "Person",
"base": "PersistedModel",
"idInjection": true,
"properties": {
"FirstName": {
"type": "string",
"required": true
},
"LastName": {
"type": "string",
"required": true
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
我的注册功能
(我使用自动生成的lb-services文件,你可以使用loopback提供的angular SDK提取,这就是为什么你只看到“User.create”之类的内容而不是“真正的”api调用)
function register(email, password, firstname, lastname) {
var usr = User.create({
email: email,
password: password
}).$promise;
var prs = usr.person.create({
firstname: firstname,
lastname: lastname
});
return usr;
}
这里肯定会有一堆错误,我只是不知道是什么。用户在数据库中创建,但我似乎无法立即创建“人”对象并将其链接到新创建的用户。
感谢任何帮助,因为我似乎无法在网上找到许多使用angular和loopback与生成的lb-services文件的资源......
答案 0 :(得分:1)
似乎您引用了person
实例的未定义属性usr
。
使用用户资源创建人员,成功回调:
function register(email, password, firstname, lastname) {
var usr = User.create({
email: email,
password: password
}, function() {
User.person.create({ userId: usr.id }, {
firstname: firstname,
lastname: lastname
}, function(person) {
console.log('Persone created:', persone)
})
});
return usr;
}