使用Firebase仅保存一个用户的数据

时间:2019-07-12 19:04:43

标签: javascript firebase google-cloud-firestore electron

我正在开发电子应用程序并使用Firebase数据库。我逐个用户创建数据库,但为每个人保存数据。我想将数据也保存为用户ID。

我可以在其用户ID下创建一个用户,但无法在其用户ID下写入其数据。

app.controller('loginCtrl', function($scope,$location){
$scope.signup = function(){
    auth.createUserWithEmailAndPassword($scope.mail,$scope.parola).then(sonuc=>{
        console.log(sonuc.user);
        return db.collection('users').doc(sonuc.user.uid).set({
            inputQ: $scope.inputQ
        }).then( ()=> {
            console.log('deneme basarili');
        }).catch(err => {
            console.log(err.message);
        })
    })
}

$scope.login = function(){
    auth.signInWithEmailAndPassword($scope.mail,$scope.parola).then(sonuc=> {
        $location.path('/dashboard')
    })
}

});

这部分成功地在其用户ID下创建了一个用户。

app.controller('dashboardCtrl', function($scope){
$scope.add = function() {
    db.collection('users').doc(user.uid).add({
        baslik: $scope.baslik,
        icerik: $scope.icerik
    }).then( ()=> {
        console.log('ekleme basarili');
    }).catch(err=>{
        console.log(err.message);
    })
}

该部分无法使用其用户ID创建数据。

错误是未定义用户。

2 个答案:

答案 0 :(得分:0)

app.controller('dashboardCtrl', function($scope){
    $scope.add = function() {
        db.collection('users').doc(user.uid).set({
            baslik: $scope.baslik,
            icerik: $scope.icerik
        }).then( ()=> {
            console.log('ekleme basarili');
        }).catch(err=>{
        console.log(err.message);
    })
}

尝试使用“集合”而不是“添加”,“添加”通常保留用于添加到集合中,在集合中为您创建记录标识符,而无需您提供它。

答案 1 :(得分:0)

您应该将.add更改为.set,但也要确保包含merge: true以防止覆盖文档(例如,如果有当前文档,它将对其进行更新,如果存在不会创建一个文档。)

app.controller('dashboardCtrl', function($scope){
$scope.add = function() {
    db.collection('users').doc(user.uid).set(
      {
        .
        .
        .
      },
      { merge: true }
    ).then( ()=> {

    }).catch(err=>{

    })
}