基本的 graphQL Mongoose 设置

Posted

技术标签:

【中文标题】基本的 graphQL Mongoose 设置【英文标题】:Basic graphQL Mongoose set up 【发布时间】:2016-10-11 18:12:48 【问题描述】:

我关注了http://docs.apollostack.com/apollo-server/guide.html/ 和这个video,并想尝试将其连接到 www.mlab.com 上的 db。该项目正在连接到 mlab 和 graphiql,但是当我在 graphiql 中运行查询时,我的查询得到了 null/undefined 值。

这是 schema.js

const typeDefinitions = `
type Biz 
 name: String
 address: String


type Query 
 biz(name: String, address: String): Biz


schema 
 query: Query

`;

export default [typeDefinitions]; 

这是connectors.js:

// businesses in mongo DB
    const MONGOLAB_URI = 'mongodb://user:password@ds064278.mlab.com:64278/klik-mongodb';
    const mongo = Mongoose.connect(MONGOLAB_URI, function (err, res) 
     if (err) 
       console.log ('ERROR connecting to: ' + MONGOLAB_URI + '. ' + err);
      else 
       console.log ( 'Succeeded connected to: ' + MONGOLAB_URI );
     
    );

    const BizSchema = Mongoose.Schema(
     _id: Object,
     address: String,
     city: String,
     country: String,
     heading: String,
     headingid: Number,
     img_url: String,
     name: String,
     objectId: String,
     phonenumber1: String,
     website: String,
     latitude: Number,
     longitude: Number,
    );

    const Biz = Mongoose.model('bizs', BizSchema);

    export  Biz ;

这是 resolvers.js:

import  Biz  from './connectors';

    const resolvers = 
     Query: 
       biz(_,  name, address ) 
         return Biz.find( where: name, address );
       ,
     ,
    ;

    export default resolvers;   

这是我的 mlab 对象的示例:


               "_id": 
                   "$oid": "573e8c9b1379f0f2fad98290"
               ,
               "accountid": 1404,
               "address": "737, Grand Rue,",
               "city": "Port-au-Prince",
               "country": "Haiti",
               "createdAt": "10/26/2015 7:27:42 PM",
               "heading": "Computer, Printers and Supplies",
               "headingid": 323,
               "img_url": "https://res.cloudinary.com/klik-io/image/upload/v1454850817/pages-jaunes-haiti-icon_sosoco.png",
               "name": "A & M Entreprises",
               "objectId": "0lw9lVl23j",
               "phonenumber1": "+509 3770 0303",
               "website": "http://868.ht"
            

这是 graphiql 输出:

【问题讨论】:

看看这个样板文件github.com/sibelius/graphql-dataloader-boilerplate 【参考方案1】:

您的商务解析器似乎使用了find(),它将返回一个列表。你要的是findOne()

PS:您通常可以通过在适当的解析函数中添加打印语句(或运行节点调试器)来调试此类问题。

【讨论】:

谢谢。 findOne 努力得到一个结果。我希望得到一个列表,这就是我使用 find() 的原因。感谢您抽出宝贵的时间。我仍然不知道我不知道什么。将尝试打印和调试器。再次感谢。

以上是关于基本的 graphQL Mongoose 设置的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 添加到 MongoDB 的基本功能?

GraphQL Mutation 使用 Mongoose/MongodB 更新用户关注者 - $set 为空错误

Mongoose

如何在不创建 Mongoose 模型的情况下将 GraphQL 与 Mongoose 和 MongoDB 一起使用

如何使用 graphql 和 mongoose 进行突变

NestJS + Mongoose + GraphQL:“填充”不起作用