我在express-graphQL應用程序中使用貓鼬,我有一個問題,其中我的find({})
查詢如預期返回,但我無法讓我的find({id})
查詢返回除null外的任何內容。這種堆棧溢出搜索的最佳結果表明,這是模型上的一個複數化問題,雖然可能是這種情況,但我不相信這是因爲我可以使用find-all功能正常工作我的模型的單數用法。這個查詢:貓鼬發現可以返回所有,但不只是一個
{
books {
id
}
}
使用此模式:
books: {
type: new GraphQLList(BookType),
resolve() {
return Book.find({});
}
}
返回如下:
{
"data": {
"books": [
{
"id": "507f1f77bcf86cd799439011"
},
{
"id": "507f1f77bcf86cd799439012"
}
]
}
}
相反,該查詢返回null
的賬面價值:
{
book(id:"507f1f77bcf86cd799439011") {
id
}
}
whe這是我的架構定義:
book: {
type: BookType,
args: { id: { type: new GraphQLNonNull(GraphQLID) } },
resolve(parentValue, { id }) {
return Book.find({ id });
}
},
當我console.log我的id參數在該解析函數,它會返回該預期的id。我試圖使用mongoose.Types.ObjectId(id)作爲強制它作爲一個id而不是一個字符串,但這似乎沒有幫助。這就是我的模型的樣子,注意我沒有定義我的id,並且在我的實際數據庫中,id字段被輸入爲_id
,即使我在查詢中調用了id
。
import mongoose from "mongoose";
const Schema = mongoose.Schema;
const BookSchema = new Schema({
name: { type: String },
});
mongoose.model("Book", BookSchema);
編輯:一些更多的研究,我發現,這findOne工作:
Book.findOne({ name: "title" });
,而任一不要:
Book.findOne({ id: "507f1f77bcf86cd799439011" });
Book.findOne({ id });
這清楚地指出了一些問題與我如何格式化我的ID查詢,但我不確定究竟是什麼。
應該是'Book.findById(id);' – Teh
謝謝,這不能解決它不幸的。 – coherence