ionic 3 angularfire2 code to ionic 4 angularfire2 code












1















i have my code with ionic 3 angular 5 working as below



getUser(uid:string){
console.log('start of getUser with uid:' + uid)
return new Promise((resolve, reject) =>
{
this.db.object("/users/" + uid).snapshotChanges().map(
(snapshot) => {return snapshot.payload.val()}
).subscribe(
res => {
console.log('response:' + res)
resolve(res)
},
err => {
console.log(err)
reject(err)
}
)
})
}


however, with ionic 4 .map does not work any more. how do i convert this code?










share|improve this question



























    1















    i have my code with ionic 3 angular 5 working as below



    getUser(uid:string){
    console.log('start of getUser with uid:' + uid)
    return new Promise((resolve, reject) =>
    {
    this.db.object("/users/" + uid).snapshotChanges().map(
    (snapshot) => {return snapshot.payload.val()}
    ).subscribe(
    res => {
    console.log('response:' + res)
    resolve(res)
    },
    err => {
    console.log(err)
    reject(err)
    }
    )
    })
    }


    however, with ionic 4 .map does not work any more. how do i convert this code?










    share|improve this question

























      1












      1








      1








      i have my code with ionic 3 angular 5 working as below



      getUser(uid:string){
      console.log('start of getUser with uid:' + uid)
      return new Promise((resolve, reject) =>
      {
      this.db.object("/users/" + uid).snapshotChanges().map(
      (snapshot) => {return snapshot.payload.val()}
      ).subscribe(
      res => {
      console.log('response:' + res)
      resolve(res)
      },
      err => {
      console.log(err)
      reject(err)
      }
      )
      })
      }


      however, with ionic 4 .map does not work any more. how do i convert this code?










      share|improve this question














      i have my code with ionic 3 angular 5 working as below



      getUser(uid:string){
      console.log('start of getUser with uid:' + uid)
      return new Promise((resolve, reject) =>
      {
      this.db.object("/users/" + uid).snapshotChanges().map(
      (snapshot) => {return snapshot.payload.val()}
      ).subscribe(
      res => {
      console.log('response:' + res)
      resolve(res)
      },
      err => {
      console.log(err)
      reject(err)
      }
      )
      })
      }


      however, with ionic 4 .map does not work any more. how do i convert this code?







      ionic-framework angularfire2 ionic4 angularfire5






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 26 '18 at 5:11









      VikVik

      2,0751346101




      2,0751346101
























          1 Answer
          1






          active

          oldest

          votes


















          1














          Just like you can see here




          Starting in version 5.5 we have shipped "pipeable operators", which
          can be accessed in rxjs/operators (notice the pluralized "operators").
          These are meant to be a better approach for pulling in just the
          operators you need than the "patch" operators found in rxjs-compat
          package.



          NOTE: Using rxjs or rxjs/operators without making changes to your
          build process can result in larger bundles.




          So now you can use map() like this:



          // RxJS
          import { map } from 'rxjs/operators/map';

          // ...

          getUser(uid:string){
          console.log('start of getUser with uid:' + uid)
          return new Promise((resolve, reject) => {
          this.db.object("/users/" + uid)
          .snapshotChanges()
          .pipe(
          map((snapshot) => {
          return snapshot.payload.val();
          })
          )
          .subscribe(
          res => {
          console.log('response:' + res)
          resolve(res)
          },
          err => {
          console.log(err)
          reject(err)
          }
          )
          })
          }




          Not related to the question itself but just in case, if you want your getUser() method to return a promise, you can use RXJS operators as well (instead of creating and resolving a promise), like this:



          // RxJS
          import { map } from 'rxjs/operators/map';
          import { tap } from 'rxjs/operators/tap';

          // ...

          public getUser(uid: string): Promise<any> {
          console.log('start of getUser with uid:' + uid)

          return this.db
          .object("/users/" + uid)
          .snapshotChanges()
          .pipe(
          map((snapshot) => {
          return snapshot.payload.val();
          }),
          tap((response) => {
          console.log('response:' + response);
          })
          )
          .toPromise()
          }





          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53475074%2fionic-3-angularfire2-code-to-ionic-4-angularfire2-code%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Just like you can see here




            Starting in version 5.5 we have shipped "pipeable operators", which
            can be accessed in rxjs/operators (notice the pluralized "operators").
            These are meant to be a better approach for pulling in just the
            operators you need than the "patch" operators found in rxjs-compat
            package.



            NOTE: Using rxjs or rxjs/operators without making changes to your
            build process can result in larger bundles.




            So now you can use map() like this:



            // RxJS
            import { map } from 'rxjs/operators/map';

            // ...

            getUser(uid:string){
            console.log('start of getUser with uid:' + uid)
            return new Promise((resolve, reject) => {
            this.db.object("/users/" + uid)
            .snapshotChanges()
            .pipe(
            map((snapshot) => {
            return snapshot.payload.val();
            })
            )
            .subscribe(
            res => {
            console.log('response:' + res)
            resolve(res)
            },
            err => {
            console.log(err)
            reject(err)
            }
            )
            })
            }




            Not related to the question itself but just in case, if you want your getUser() method to return a promise, you can use RXJS operators as well (instead of creating and resolving a promise), like this:



            // RxJS
            import { map } from 'rxjs/operators/map';
            import { tap } from 'rxjs/operators/tap';

            // ...

            public getUser(uid: string): Promise<any> {
            console.log('start of getUser with uid:' + uid)

            return this.db
            .object("/users/" + uid)
            .snapshotChanges()
            .pipe(
            map((snapshot) => {
            return snapshot.payload.val();
            }),
            tap((response) => {
            console.log('response:' + response);
            })
            )
            .toPromise()
            }





            share|improve this answer






























              1














              Just like you can see here




              Starting in version 5.5 we have shipped "pipeable operators", which
              can be accessed in rxjs/operators (notice the pluralized "operators").
              These are meant to be a better approach for pulling in just the
              operators you need than the "patch" operators found in rxjs-compat
              package.



              NOTE: Using rxjs or rxjs/operators without making changes to your
              build process can result in larger bundles.




              So now you can use map() like this:



              // RxJS
              import { map } from 'rxjs/operators/map';

              // ...

              getUser(uid:string){
              console.log('start of getUser with uid:' + uid)
              return new Promise((resolve, reject) => {
              this.db.object("/users/" + uid)
              .snapshotChanges()
              .pipe(
              map((snapshot) => {
              return snapshot.payload.val();
              })
              )
              .subscribe(
              res => {
              console.log('response:' + res)
              resolve(res)
              },
              err => {
              console.log(err)
              reject(err)
              }
              )
              })
              }




              Not related to the question itself but just in case, if you want your getUser() method to return a promise, you can use RXJS operators as well (instead of creating and resolving a promise), like this:



              // RxJS
              import { map } from 'rxjs/operators/map';
              import { tap } from 'rxjs/operators/tap';

              // ...

              public getUser(uid: string): Promise<any> {
              console.log('start of getUser with uid:' + uid)

              return this.db
              .object("/users/" + uid)
              .snapshotChanges()
              .pipe(
              map((snapshot) => {
              return snapshot.payload.val();
              }),
              tap((response) => {
              console.log('response:' + response);
              })
              )
              .toPromise()
              }





              share|improve this answer




























                1












                1








                1







                Just like you can see here




                Starting in version 5.5 we have shipped "pipeable operators", which
                can be accessed in rxjs/operators (notice the pluralized "operators").
                These are meant to be a better approach for pulling in just the
                operators you need than the "patch" operators found in rxjs-compat
                package.



                NOTE: Using rxjs or rxjs/operators without making changes to your
                build process can result in larger bundles.




                So now you can use map() like this:



                // RxJS
                import { map } from 'rxjs/operators/map';

                // ...

                getUser(uid:string){
                console.log('start of getUser with uid:' + uid)
                return new Promise((resolve, reject) => {
                this.db.object("/users/" + uid)
                .snapshotChanges()
                .pipe(
                map((snapshot) => {
                return snapshot.payload.val();
                })
                )
                .subscribe(
                res => {
                console.log('response:' + res)
                resolve(res)
                },
                err => {
                console.log(err)
                reject(err)
                }
                )
                })
                }




                Not related to the question itself but just in case, if you want your getUser() method to return a promise, you can use RXJS operators as well (instead of creating and resolving a promise), like this:



                // RxJS
                import { map } from 'rxjs/operators/map';
                import { tap } from 'rxjs/operators/tap';

                // ...

                public getUser(uid: string): Promise<any> {
                console.log('start of getUser with uid:' + uid)

                return this.db
                .object("/users/" + uid)
                .snapshotChanges()
                .pipe(
                map((snapshot) => {
                return snapshot.payload.val();
                }),
                tap((response) => {
                console.log('response:' + response);
                })
                )
                .toPromise()
                }





                share|improve this answer















                Just like you can see here




                Starting in version 5.5 we have shipped "pipeable operators", which
                can be accessed in rxjs/operators (notice the pluralized "operators").
                These are meant to be a better approach for pulling in just the
                operators you need than the "patch" operators found in rxjs-compat
                package.



                NOTE: Using rxjs or rxjs/operators without making changes to your
                build process can result in larger bundles.




                So now you can use map() like this:



                // RxJS
                import { map } from 'rxjs/operators/map';

                // ...

                getUser(uid:string){
                console.log('start of getUser with uid:' + uid)
                return new Promise((resolve, reject) => {
                this.db.object("/users/" + uid)
                .snapshotChanges()
                .pipe(
                map((snapshot) => {
                return snapshot.payload.val();
                })
                )
                .subscribe(
                res => {
                console.log('response:' + res)
                resolve(res)
                },
                err => {
                console.log(err)
                reject(err)
                }
                )
                })
                }




                Not related to the question itself but just in case, if you want your getUser() method to return a promise, you can use RXJS operators as well (instead of creating and resolving a promise), like this:



                // RxJS
                import { map } from 'rxjs/operators/map';
                import { tap } from 'rxjs/operators/tap';

                // ...

                public getUser(uid: string): Promise<any> {
                console.log('start of getUser with uid:' + uid)

                return this.db
                .object("/users/" + uid)
                .snapshotChanges()
                .pipe(
                map((snapshot) => {
                return snapshot.payload.val();
                }),
                tap((response) => {
                console.log('response:' + response);
                })
                )
                .toPromise()
                }






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 26 '18 at 5:28

























                answered Nov 26 '18 at 5:20









                sebaferrerassebaferreras

                33.3k87999




                33.3k87999
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53475074%2fionic-3-angularfire2-code-to-ionic-4-angularfire2-code%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Ottavio Pratesi

                    Tricia Helfer

                    15 giugno