小编FIr*_*man的帖子

有没有办法摆脱 GraphQL 中的 [Object: null prototype]

我试图与一个一对多的关系数据库MongooseGraphQL

每当我将数据插入 GraphQL 突变参数时,我都会收到[Object: null prototype]错误消息。

我注意到[Object: null prototype]当我尝试console.log进行调试时,对象会在它前面。

我尝试了很多方法,尝试使用map()args 甚至使用replace()但没有运气。我得到的只是"args.ingredient.map/replace is not a function"

我通过更改参数来测试硬编码方法,例如:

args.category = '5c28c79af62fad2514ccc788'
args.ingredient = '5c28c8deb99a9d263462a086'
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它适用于这种方法。我假设输入不能是一个对象而只是一个 ID。

实际结果见下文。

解析器

Query: {
    recipes: async (root, args, { req }, info) => {
        return Recipe.find({}).populate('ingredient category', 'name createdAt').exec().then(docs => docs.map(x => x))
    },
},
Mutation: {
    addRecipe: async (root, args, { req }, info) => {
      // args.category = '5c28c79af62fad2514ccc788' …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose node.js graphql apollo-server

7
推荐指数
2
解决办法
9006
查看次数

如何使用 MongoDB 正确设计配方/成分的数据模型

最近我使用 Hackalode 设计了一个数据库模型或 ERD。所以我目前面临的问题是,根据我当前的设计,我无法按照我的意愿正确查询它。我用 MYSQL 研究了 ERD,确实知道 Mongo 的工作方式不一样

这个想法很简单,我想要一个包含一系列成分列表的食谱,并且这些成分来自单独的集合。配方还包括成分的测量,即。(1汤匙糖)

还可以从配料表中查询,找到包含该配料的菜谱

我希望这个集合处于多对多关系,并且配方可以使用数据库中已有的成分。

目前的数据模型设计

我只是不知道如何查询数据

我通过使用 $elemMatch 和 populate 尝试了很多方法,结果我得到的只是空数组列表。

我期待两种类型的查询,我可以按成分名称或配方进行查询

我的预期结果是这样的

[{
   id: ...,
   name: ....,
   description: ...,
   macros: [...],
   ingredients: [
   {
       id,
       amount: ....,
       unit: ....
       ingredient: {
           id: ....,
           name: ....
       }
   }
}, { ... }]
Run Code Online (Sandbox Code Playgroud)

但不是得到

[]
Run Code Online (Sandbox Code Playgroud)

database erd many-to-many mongodb mongodb-query

1
推荐指数
1
解决办法
5080
查看次数