代码之家  ›  专栏  ›  技术社区  ›  Manu Chadha

获得“object Promise”作为响应,而不是正确的值

  •  0
  • Manu Chadha  · 技术社区  · 1 年前

    这个 questionController 下面假设处理一个 /question 路径并返回响应。我目前只是在测试与数据库的连接,从而返回一个硬编码的值。

    但是,在客户端收到的值不是的值 q 但是以下内容:

    [
      {
        "message": "[object Promise]"
      }
    ]
    

    我做错了什么?

    问题.js

    const mongoUtils = require('../mongoUtils');
    var db ;
    
    var Question = require('../schema/question')
    
    async function getQuestion(){
      var q = null;
      try {
        //const db = dbClient.db("Questions");
        console.log(`db in getQuestion ${db}`);
        const areaCollection = await db.collection("Area");
        console.log(`area collection is ${areaCollection}`);
        q = Question({
          description: "some description",
          hints: ["hint1", "hint2"],
          topic: 'area'
        });
      } catch(exception) {
        console.log(`something bad happened in dbconnect: ${exception}`);
      } finally {
        console.log(`question object : ${JSON.stringify(q)}`);
        
      }
      return q
      
    }
    
    exports.questionController = function (req, res) {
      db = mongoUtils.getDb();
      console.log(`db in question is ${db}`);
      console.log(`connected to database ${db.databaseName}`);
        
      var question = getQuestion();
      console.log('question page');
      //var response = res.json([{"message": `${question}`}]);
      var response = [{"message": `${question}`}];
      console.log(`returning response: ${JSON.stringify(response)}`)
      return res.json(response);
    }
    
    2 回复  |  直到 1 年前
        1
  •  0
  •   Manu Chadha    1 年前

    很高兴接受另一个答案。似乎正确的方法是使用 then

    getQuestion().then((question)=>{
        console.log('question page');
        //var response = res.json([{"message": `${question}`}]);
        var response = [{"message": `${question}`}];
        console.log(`returning response: ${JSON.stringify(response)}`)
        return res.json(response);
      } );
    
        2
  •  0
  •   Pádraig Galvin    1 年前

    这个 getQuestion 函数返回一个需要解析才能得到结果的promise。

    exports.questionController = async function (req, res) {
      const question = await getQuestion();
      const response = [{ message: question }];
      return res.json(response);
    }