mongo db数据未在graphql的解析器函数中返回,但在我的nodejs服务器的路由中工作

时间:2019-01-16 17:27:48

标签: node.js mongodb graphql hapi

我正在基于hapi,graphql和mongodb设置节点js环境。我能够连接到mongodb,并使用db mongoose模式在GET / POST路由中检索和显示数据。但是,当将模型传递给graphql的resolver函数时,不会获取数据。请在下面找到我的graphql解析器功能

const resolvers = (shows)=>({
myQuery:{
    testFunction(){
        return "returned from custom test function";
    },

    getShowByName: function(_,args){    

        var out= shows.findOne();

        console.log(out);         //returning a huge json response instead of proper data

        return out={
            _id:"5349b4ddd2781d08c09890f3",
            title: "test",
            version: "test",
            showDetails: [{
                name: args.showSchemaName,
                genre: "test",
                lead_actor: "test"
            }]
        }

        ;
    },


},
myMutation: {
    createShow: function(_,args){
        return args.showTypeInputDetails.title+","+args.showTypeInputDetails.version;

    }

}

});

module.exports = resolvers;

Console.log(out)正在发出一个巨大的json响应,它不是来自mongo db。 json响应确实很大,并且还包含我的连接参数,凭据和其他详细信息,因此,我在此处发布了响应的开头

Query {
  _mongooseOptions: {},
  _transforms: [],
  mongooseCollection:
   NativeCollection {
     collection: Collection { s: [Object] },
     opts:
      { bufferCommands: true,
        capped: false,
        '$wasForceClosed': undefined },
     name: 'shows_details',
     collectionName: 'shows_coll',
     conn:
      NativeConnection {
        base: [Object],
        collections: [Object],
        models: [Object],
        config: [Object],
        replica: false,

请帮助我理解为什么解析器函数触发findOne()时会出现此响应,而路由函数触发相同函数时会产生正确的结果。

[显示的是我的猫鼬数据库模型]

2 个答案:

答案 0 :(得分:0)

为什么不像下面的代码那样尝试。

library(tidyverse)
mget(ls(pattern="USD")) %>%         
              imap(~ {nm1 <- .y
                      .x %>% 
                         rename_at(2, ~ nm1) })

});

答案 1 :(得分:0)

我使我的解析器功能异步,并使用await返回数据,从而解决了问题