【发布时间】:2013-10-18 21:54:42
【问题描述】:
此处提出了类似的问题,但接受的答案并没有真正回答问题。
Using AngularFire, is it possible to to create relational-style databases? Or access the UniqueIDs?
通过 AngularFire 将嵌套项添加到 Firebase 时,每个项实际上都设置在另一个以数字编号的索引下。
因此,我需要使用以下相对 url 引用用户的产品:
users/:id/products
我的问题是,一旦我创建了一个用户(或任何相关的东西),我如何获得索引值?
// Get the users
var ref = new Firebase('https://myapp.firebaseio.com/users')
var promise = angularFire(ref, $scope, 'users', {})
promise.then(function() {
// Can I get the ID from here somehow?
})
// Users saves a product
id = null // ???
var product = {
name: 'new product',
desc: 'this is a new product'
}
var ref = new Firebase('https://myapp.firebaseio.com/users/' + id + '/products')
var promise = angularFire(ref, $scope, 'products', {})
promise.then(function() {
$scope.products.push(product)
})
更新
澄清一下,这不是关于用户身份验证的问题。我已经处理好了。对困惑感到抱歉。
当我开始在 Firebase 中“在”其他东西下制作东西时,我遇到了障碍。不管是users 还是giraffes。
如果我制作“商店”,则每个商店都有“产品”(比方说。)
我希望能够使用
检索它们stores/{storeId}/products
但理想情况下,storeId 是从 AngularFire 创建的索引 ID(参见我附上的图片)。问题是,AngularFire 只是创建了这个 ID,而不让我知道。
如果我有一些成功的功能,比如
success: function(response) {
$scope.store.id = response.indexId
}
这是最有意义的,但 AngularFire 似乎并没有准备好这个非常需要的功能。请证明我错了。 :)
【问题讨论】:
-
仅供参考,您的 angularFire() 调用的最后一个参数 {} 现在已弃用。您可以通过在启动 angularFire 之前执行
$scope.users = {}来完成类似的事情。 -
@bennlich 我是否错误地认为无论您在
angularFire返回之前如何初始化,您总是会返回一个对象?如果是这样,您可以在docs 中的隐式angularFire绑定上使用.push()的建议不准确吗?我知道这有点离题,但我认为仍然相关。 -
@hiattp 为什么 .push() 会出错?
-
好吧,JavaScript 对象没有 push 方法,只有数组。
-
@hiattp 看到这个小提琴:jsfiddle.net/4zGvz/2。如果它以对象的形式开始生命,则您将返回一个对象,如果以数组的形式开始生命,则返回一个数组。否则,它会等待查看引用中已经存在的数据类型。
标签: javascript firebase angularfire