如何使用GraphQL将对象推入数组?

时间:2018-12-21 13:07:33

标签: javascript graphql

我想更改解析器在数据库中创建支付卡的方式。因此,现在我在一个集合中创建钱包,然后在另一个集合中创建付款,并在我的付款中使用wallet_id将其链接。但是现在我想将付款放入钱包中定义的card []中。知道如何在解析器中执行此操作吗?

这是我的电子钱包架构

const WalletSchema = new Schema({
    tokens: {
        type: Number,
        default: 0
    },
    userId: {
        type: Schema.Types.ObjectId,
        ref: 'User',
        unique: true
    },
    cards: [
        {
            type: Schema.Types.ObjectId,
            ref: 'Payment'
        }
    ]
}, { timestamps: true });

这是我的createPayment解析器

createPayment: async (_, { wallet_id, ...args }, { user }) => {
    try {
        await requireAuth(user);
        const payment = await Payment.create({ ...args, wallet: wallet_id });

        pubsub.publish(PAYMENT_ADDED, { [PAYMENT_ADDED]: payment });

        return payment;
    } catch (error) {
        throw error;
    }
},

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

您需要为卡支付创建另一个架构;

const WalletSchema = new Schema({
    tokens: {
        type: Number,
        default: 0
    },
    userId: {
        type: Schema.Types.ObjectId,
        ref: 'User',
        unique: true
    },
    cards: [ PaymentSchema ] <-- here
}, { timestamps: true });

//新架构

const PaymentSchema = new Schema({
     type: Schema.Types.ObjectId,
     ref: 'Payment'
   });

基于电子钱包架构,您需要编写暴露graphql架构