承诺{<pending>} .forEach不是一个函数

时间:2020-04-08 06:45:42

标签: javascript node.js

此功能,我试图遍历目录的内容,但返回错误。

contents.forEach不是函数

function getBook(fileName){
return new Promise((resolve,reject)=>{
    const bookSql =`select * from book1 where fileName='${fileName}'`
    const contentsSql =`select * from contents1 where fileName='${fileName}'order by \`order\``
    const book = db.queryOne(bookSql)
    const contents = db.querySql(contentsSql)
    if(book){
        book.cover=Book.genCoverUrl(book)
        console.log('contents:',contents);
        book.contentsTree=Book.genContentsTree(contents)
    }
    resolve(book)
})
}

和genContentsTree主要问题在这里。forEach

static genContentsTree(contents){
    if(contents){
        const contentsTree = []
        contents.forEach(c => {
            c.children = []
            if (c.pid === '') {
                contentsTree.push(c)
            } else {
              const parent = contents.find(_ => _.navId === c.pid)
              parent.children.push(c)
            }
          }) 
          return contentsTree
    }
}

这是控制台报告的错误以及有关内容的输出

contents: Promise { <pending> }
TypeError: contents.forEach is not a function
    at Function.genContentsTree (/Users/dujinyang/admin-imooc-node/models/Book.js:362:22)
    at /Users/dujinyang/admin-imooc-node/services/book.js:72:32
    at new Promise (<anonymous>)
    at getBook (/Users/dujinyang/admin-imooc-node/services/book.js:64:8)
    at /Users/dujinyang/admin-imooc-node/router/book.js:53:13
    at Layer.handle [as handle_request] (/Users/dujinyang/admin-imooc-node/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/dujinyang/admin-imooc-node/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/dujinyang/admin-imooc-node/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/dujinyang/admin-imooc-node/node_modules/express/lib/router/layer.js:95:5)
    at /Users/dujinyang/admin-imooc-node/node_modules/express/lib/router/index.js:281:22 {
  isBoom: true,
  isServer: true,
  data: null,
  output: {
    statusCode: 500,
    payload: {
      statusCode: 500,
      error: 'Internal Server Error',
      message: 'An internal server error occurred'
    },
    headers: {}
  },
  reformat: [Function],
  isDeveloperError: true
}
{
  code: -1,
  msg: 'contents.forEach is not a function',
  error: 500,
  errorMsg: 'Internal Server Error'
}

0 个答案:

没有答案