尝试在MST(Mobx状态树)操作中创建Firebase用户

时间:2019-08-16 10:59:22

标签: firebase react-native mobx mobx-state-tree

我正在尝试使用MST操作在Firebase中创建新用户。

我的代码如下:

.actions((self => ({
    createUserWithEmailPassword:
        flow(function*(password: string) {
            console.log('creating user');
            yield firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
            console.log('set Persistence');
            const user = yield firebase.auth().createUserWithEmailAndPassword(self.email, password);
            console.log('CREATED USER', user);
            self.uid = user.uid;
        })
}));

它确实创建了一个用户,但不会进行createUserWithEmailAndPassword调用。 (即它将永远不会控制台“ CREATED USER`”)。

我在用户上也有onPatch控制台,但它也不会显示用户更新。

我厌倦了操纵虚假的api调用

let res = yield fetch("https://randomapi.com/api/6de6abfedb24f889e0b5f675edc50deb?fmt=raw&sole")

这很好用。

createUserWithEmailAndPassword好像有问题,但我无法弄清楚。

1 个答案:

答案 0 :(得分:1)

您的代码应该可以使用,但是您也可以尝试

createUserWithEmailPassword(password: string) {   
  flow(function*() {
            console.log('creating user');
            yield firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
            console.log('set Persistence');
            const user = yield firebase.auth().createUserWithEmailAndPassword(self.email, password);
            console.log('CREATED USER', user);
            self.uid = user.uid;
        })() // <--- check this
}

Flow将返回您需要调用的函数

或者像这样

createUserWithEmailPassword(password: string) {
        const run = flow(function*() {
            console.log('creating user');
            yield firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
            console.log('set Persistence');
            const user = yield firebase.auth().createUserWithEmailAndPassword(self.email, password);
            console.log('CREATED USER', user);
            self.uid = user.uid;
        })

        run()
}