2017-08-24 1 views
0

J'ai une erreur comme ci-dessus, mais je n'ai rien trouvé de mal avec mon code.Promesse: L'argument de type void n'est pas assignable au type T

write(data: T): Promise<T> { 
    return new Promise((resolve, reject) => { 
     this.open() 
     .then((db) => { 
      return db.collection(this.table); 
     }) 
     .then((table) => { 
      table.insertOne(data) 
     }) 
     .then((result) => { 
      console.log(result); 
      resolve(result); 
     }) 
     .catch((err) => { 
      reject(err); 
     }) 
    }) 
} 

J'ai essayé de mettre cela comme

write(data: T): Promise<any> 

et cela a fonctionné comme un charme. Mais étonnant, qu'ai-je fait de mal? Quelqu'un peut-il me diriger vers le bon code?

Merci

Répondre

0

Il semble que votre chaîne de promesse pourrait violeront ici:

.then((table) => { 
    table.insertOne(data) 
}) 

Comme vous ne retournez pas une valeur ici, result ne va pas avoir une valeur dans la prochaine then. Je m'attends à ce que TypeScript vous avertisse de cette erreur potentielle.

+1

Ah .. Je vois .. Merci. Le retour d'insertOne et le traitement du résultat l'ont résolu. – Magician