簡體   English   中英

如何返回 Mongoose 嵌套對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM