我通过Angular进行后端操作并使用Firebase作为数据库。
一切都很好,而且我创造了一个控制器来创造新的花盆 - 它完美无缺。
但是,在创建新帖子时,它会在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,
})
}
我正在使用范围来创建新的底池,但我不想使用随机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
任何建议都会令人惊叹!
感谢您的帮助!
答案 0 :(得分:1)
在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
。