我正在通过 Angular 做后端并使用 Firebase 作为数据库。
一切都工作得很好,我已经创建了一个 Controller 来创建新的花盆 - 效果非常好。
但是,在创建新帖子时,它会在 firebase 中提供一个非常长且随机的 ID。
.controller("VideosCtrl", function(firebase, $scope, $firebaseArray) {
var ref = firebase.database().ref('posts')
$scope.groups = $firebaseArray(ref);
$scope.addgroup = function() {
$scope.groups.$add({
title: $scope.newgroupTitle,
caption: $scope.newgroupCaption,
creator: $scope.newgroupCreator,
privacy: $scope.newgroupPrivacy,
published: $scope.newgroupPublished,
})
}
我正在使用范围来创建新 jar ,但我不想使用随机 ID 来获取标题
title: $scope.newgroupTitle,
所以当前我创建帖子时的数据库如下所示:
--mydomain
---- posts
------ RANDOM ID GENERATED
--------title
--------caption
--------creator
--------privacy
--------published
------ RANDOM ID GENERATED
--------title
--------caption
--------creator
--------privacy
--------published
----users
我想要:
--mydomain
---- posts
------ TITLE ( same as below)
--------title
--------caption
--------creator
--------privacy
--------published
------ TITLE (same as below)
--------title
--------caption
--------creator
--------privacy
--------published
----users
任何推荐都会很棒!
谢谢大家的帮助!
最佳答案
当您在 Firebase 中使用 $add 时,您会自动创建推送 ID。如果您想使用自定义 id。相反,您应该使用object.child(id).set(objectInfo);
。
我修改了您的代码如下:
$scope.addgroup = function() {
$scope.groups.$ref().child($scope.newgroupTitle).set({
title: $scope.newgroupTitle,
caption: $scope.newgroupCaption,
creator: $scope.newgroupCreator,
privacy: $scope.newgroupPrivacy,
published: $scope.newgroupPublished
});
}
这是纯 JavaScript 代码,但它应该可以工作,因为 Angularfire 是构建在 JavaScript 库之上的。
这里需要注意的一件事是,当您想要使用自定义键在 Firebase 中存储对象时,最好使用 $firebaseObject
而不是 $firebaseArray
。
关于javascript - 通过 Angular 在 firebase 中使用自定义标题而不是 ID 创建新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43067032/