我试图与一个一对多的关系数据库Mongoose和GraphQL。
每当我将数据插入 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) 最近我使用 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)