Данные mongo db не возвращаются в функцию распознавателя для graphql, но работают на маршрутах моего сервера nodejs - PullRequest
0 голосов
/ 16 января 2019

Я настраиваю среду js для узлов на основе hapi, graphql и mongodb. Я могу установить соединение с mongodb, а также получать и отображать данные в маршрутах GET / POST, используя схемы db mongoose. Но данные не извлекаются, когда модель передается в функцию распознавателя graphql. Пожалуйста, найдите ниже мою функцию распознавания 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, который не исходит от dong монго. Ответ 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 голосов
/ 18 января 2019

я сделал мою функцию распознавателя асинхронной и вернул данные с помощью await, и это решило проблему

0 голосов
/ 16 января 2019

почему бы вам не попробовать, как показано ниже.

dbo.collection("collection_name").findOne({}, function(err, result) {
 if (err) throw err;
 console.log(result.name);
 db.close();

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...