如何在具有环回和 angular 的两个对象之间创建正确的 hasOne 关系
How do I create a correct hasOne relation between two objects with loopback and angular
我最近开始在 angular 中编写代码作为前端代码,并计划使用环回 (www.loopback.io) 作为我的后端(使用 mongodb 作为我的存储) .
现在,作为一个基本想法,我只是创建一个登录表单和注册表单,然后从那里继续。然而,我似乎无法让我的模型正确,尤其是它们之间的关系。
我想要一个用于基本 username/password 内容的用户模型,以及一个我可以存储更多信息(如名字、姓氏等)的人物模型。
我目前正在使用 "default" 开箱即用的用户模型,并创建了具有所需属性的人物模型。
不过,我无法正确理解的是两者之间的 link(一对一关系,因此是 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" 而不是 "real"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;
}
这里肯定有很多错误,我只是不知道是什么。用户在数据库中创建,但我似乎无法立即创建一个 "person" 对象和 link 给新创建的用户。
感谢任何帮助,因为我似乎无法在网上找到那么多使用 angular 并使用生成的 lb-services 文件进行环回的资源...
您似乎引用了 usr
实例的未定义 属性 person
。
使用User资源创建人物,成功回调:
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;
}
我最近开始在 angular 中编写代码作为前端代码,并计划使用环回 (www.loopback.io) 作为我的后端(使用 mongodb 作为我的存储) .
现在,作为一个基本想法,我只是创建一个登录表单和注册表单,然后从那里继续。然而,我似乎无法让我的模型正确,尤其是它们之间的关系。
我想要一个用于基本 username/password 内容的用户模型,以及一个我可以存储更多信息(如名字、姓氏等)的人物模型。
我目前正在使用 "default" 开箱即用的用户模型,并创建了具有所需属性的人物模型。
不过,我无法正确理解的是两者之间的 link(一对一关系,因此是 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" 而不是 "real"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;
}
这里肯定有很多错误,我只是不知道是什么。用户在数据库中创建,但我似乎无法立即创建一个 "person" 对象和 link 给新创建的用户。
感谢任何帮助,因为我似乎无法在网上找到那么多使用 angular 并使用生成的 lb-services 文件进行环回的资源...
您似乎引用了 usr
实例的未定义 属性 person
。
使用User资源创建人物,成功回调:
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;
}