目前我正在使用:
this.af.database.list('users').push(user);
如何使提交的对象的密钥自定义。 所以我希望能够将此对象的节点设置为注册用户的同一个uid。我有权访问此ID我只需要知道如何在推送时使自定义用户对象节点不是自动生成的ID。
由于
答案 0 :(得分:9)
使用与Angularfire2
类似的方法addCustomKey (key, value) {
const toSend = this.af.database.object(`/users/${key}`);
toSend.set(value);
}
答案 1 :(得分:5)
这是您可以使用AngularFire2的另一种方法
addCustomKey(key, value) {
const users = this.af.database.object('/users');
users.update({ [key]: value });
}
答案 2 :(得分:2)
push
会添加推送键,只需使用update
方法:
this.yourRef = this.af.database.list('users');
let userId = "UID",
userInfos = { data: "your user datas" };
this.yourRef.update(userId, userInfos);
答案 3 :(得分:1)
vanilla js看起来像这样:
//to generate a key do something like
var id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
function setNode(key){
if (key){
var thisRef = ref.child('testLocation');
var obj = {};
obj[key] = true;
thisRef.update(obj, onComplete);
}
}
答案 4 :(得分:1)
传入您的自定义键,在本例中为projectKey,它是您从某处填充的变量:
private whatEverName(projectKey) {
this.projectKey = projectKey;
this.af.object('/Projects/' + this.projectKey);
}
在某处调用代码中的whatEverName(projectKey)并获得自定义节点密钥。此建议截至2017年7月25日为止。
我在此处添加了一些内容,以帮助那些尝试使用另一个按键作为自定义键创建上述子节点的人。这对于该项目下的关联索引很有用,例如处理该项目的用户列表。您可能不希望在项目数据中使用此列表,但可以通过查询获取该列表。这样可以更容易地对数据进行非规范化,并具有更平坦的体系结构,即Firebase的目标。
在这种情况下,该关联节点称为ProjectsMembers,我们正在其中记录项目的所有者。以相同的方式添加其他用户节点。注意反引号!!! 单引号不起作用。在这种情况下,我将所有者名称设置为push键的引用。更容易在数据库中阅读。
// Add child node with project key as push key to the association index.
this.af.object(`ProjectsMembers/${projectKey}/` + this.ownerKey)
.set({ ownerName: this.ownerName });
答案 5 :(得分:1)
正如上面的许多答案中所提到的,调用push()
将为您生成一个密钥。这是另一种方法。
相反,如果要设置自定义键以确定自己的键/路径,则必须使用child()
。像这样:
firebase.database.ref().child('/path/with/custom/key/goes/here').set();
在您的情况下,要使用用户的身份验证ID,请按以下步骤操作:
export class SomeClass {
uid: string;
constructor(public afDB: AngularFireDatabase, public afAuth: AngularFireAuth) {
// Get User Auth ID
afAuth.authState.subscribe(user => {
this.uid = user.uid;
});
}
//Your method
this.afDB.database.ref().child(`users/${this.uid}/`).set(user);
}
答案 6 :(得分:0)
只需使用常规的firebase方法:
library(latex2exp)
library(ggplot2)
qplot(1, "A")+
ylab(TeX("Formula: $\\frac{2hc^2}{\\lambda^\\beta}$"))+
xlab(TeX("$\\alpha$"))
您的范围内绑定到列表的任何内容都将反映更新。