Eze*_*iro 2 javascript firebase firebase-realtime-database
我正在测试 firebase 的实时数据库,但我真的很难过。首先,我想知道查找记录并使用其他信息更新它的最佳方法是什么。假设我有一个用户并且有一个发布请求,我想更改其名称。
我试过:
var userRef = admin.database().ref('users');
var email = req.body.email;
var name = req.body.name;
userRef.equalTo(email).update({name: name});
Run Code Online (Sandbox Code Playgroud)
尝试遵循官方文档,但没有运气。
我的数据库:
users
-Lbq98URniAej2TkWBhG
email: "pepe@san.com"
name: "Pepe"
-Lbq9GC1A131De-iumI0
email: "pipa@boca.com"
name: "Pipa"
Run Code Online (Sandbox Code Playgroud)
另外,请注意我事先不知道 uid,所以我必须查看子数据。
首先,我想知道查找记录并使用其他信息更新它的最佳方法是什么。
我不确定这是否是最好的方法,但对于您的情况,我会以这种方式设置我的数据库
users
-- unique user id - 1
-- name
-- email
-- posts
-- unique post id
-- unique user id - 2
-- name
-- email
-- posts
-- unique post id
// and so on
Run Code Online (Sandbox Code Playgroud)
然后我会使用用户 id 像这样更改名称。
var database = admin.database();
var name = req.body.name;
var uid = req.body.uid;
var userRef = database.ref('users/' + uid);
userRef.update({name : name})
.then(() => {
console.log("Update Successfull")
})
.catch(error => {
console.log(error);
});
Run Code Online (Sandbox Code Playgroud)
我猜你的数据库是这样组织的:
users
-- pxTYaszxcsauniqueId1
-- email
-- name
-- posts
-- unique post id
-- abcdeFFFaKauniqueId2
-- email
-- name
-- posts
-- unique post id
// and so on
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我会使用电子邮件来查找文档,执行如下操作:
// Get a reference to the database service
var database = admin.database();
var name = req.body.name;
var email = req.body.email;
var ref = database.ref("users").orderByChild("email").equalTo(email);
ref.once("value").then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
childSnapshot.ref.update({
"name" : name
}).then(function() {
console.log("Success")
});
// Cancel enumeration
return true;
});
})
Run Code Online (Sandbox Code Playgroud)
同样,这是假设您组织数据库的方式。如果您以不同的方式组织数据库,则上述代码将不起作用。如果它不同,那么请在您发布的问题中添加您组织数据库的方式。
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |