Each then() should return a value or throw Firebase cloud functions

后端 未结 3 891
青春惊慌失措
青春惊慌失措 2020-11-30 12:57

I am writing a cloud function for firebase using javascript but I am stuck, I don\'t know the exact meaning of error and unable to solve it.. The error states: 27:65 error

相关标签:
3条回答
  • 2020-11-30 13:02

    That's jslinting telling you that each .then must include a return value. In other words, avoid promise anti pattern.

    You might find async functions easier to wrap your head around. Note that you'll need to run the Node 8 runtime for async support though...

    0 讨论(0)
  • 2020-11-30 13:07

    Change this:

        return admin.messaging().sendToDevice(token_id, payload).then(response => {
    
        console.log('This was the notification Feature');
    
      });
    

    into this:

        return admin.messaging().sendToDevice(token_id, payload).then(response=>{
          console.log('This was the notification Feature');
          return true;
        },err=>
        {
          throw err;
        });
    

    As the error says when using then you need to return a value.

    0 讨论(0)
  • 2020-11-30 13:22

    Change this:

        return admin.messaging().sendToDevice(token_id, payload).then(response => {
    
            console.log('This was the notification Feature');
    
        });
    

    To this:

        return admin.messaging().sendToDevice(token_id, payload).then(response => {
    
            console.log('This was the notification Feature');
            return null;   // add this line
    
        });
    

    The then callback just needs to return a value.

    However, eslint may then complain about nested then() in your code, which is also an anti-pattern. Your code should really be structured more like this:

    const deviceToken = admin.database().ref(`/ServiceProvider/${user_id}/device_token`).once('value');
    return deviceToken.then(result => {
        // redacted stuff...
        return admin.messaging().sendToDevice(token_id, payload);
    }).then(() => {
        console.log('This was the notification Feature');
    });
    

    Note that each then chains off of each other, rather than being nested inside each other.

    0 讨论(0)
提交回复
热议问题