[英]how to return a Mongoose nested array of objects
我正在嘗試返回我在 mongoose model 中聲明的嵌套 Object,如下所示:
const MessageSchema = new Schema({
messageLog: [
{
transcript: {
type: String
},
recipient: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true
},
sender: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true
}
}]
});
但是,當我嘗試通過 graphql 解析器查詢它時,我無法獲得內部 object 的值(轉錄本、發件人、收件人在 gql 操場上為 null,但在數據庫中更新)我已將其設置如下:
query = args.messageId ? { _id: args.messageId } : { _id: new ObjectId() };
const message = await Message.findOneAndUpdate(query, {$addToSet: {messageLog: {transcript: args.messageBody, sender: args.senderId, recipient: args.recipientId}}}, {$setOnInsert: args, upsert: true, new: true, runValidators: true})
return message.messageLog;
我能夠在數據庫中創建新的 object 和嵌套的 messageLog,但由於某種原因我只能返回 id,而不是 messageLog 對象數組。 通常問題在於我如何解決(解析器),但我也會將我的 typeDef 放在這里以防問題出在那里。
type Message {
_id: ID
transcript: [String]
recipient: [User]
sender: [User]
}
因此,如果有人有類似的架構設置和問題,解決方案是也引用具有嵌套級別的 typeDef。 因此,由於 transcript、recipient 和 sender 嵌套在下一層,因此必須為嵌套的 object 定義 typeDef,然后按如下方式在消息類型上引用:
type messageLog {
_id: ID
transcript: String
recipient: User
sender: User
}
type Message {
_id: ID
messageLog: [messageLog]
}
並為用戶使用填充,因為它是 objectId 引用的模式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.