Meteor Call 对象与接收到的 Meteor Method 对象不同

Meteor Call object is different to the received Meteor Method object

我正在使用 Meteor Call 和 Meteor 方法将对象从客户端发送到服务器。

当在 Method 中接收到对象时,它看起来会有所不同。它嵌套在 giftList

流星呼唤 - JSON.stringify

{"personName":"Default person name","username":"","gifts":[]}

流星法

{"giftList":{"personName":"Default person name","username":"","gifts":[]}}

流星召唤码

console.log(JSON.stringify(giftList))  // {"personName":"Default person name","username":"","gifts":[]}

Meteor.call("addGiftList", {giftList}, (err: any, res) => {});

流星法代码

Meteor.methods({
    "addGiftList": function (giftList: GiftList): void {
        console.log(JSON.stringify(giftList))  // {"giftList":{"personName":"Default person name","username":"","gifts":[]}}
        return GiftListCollectionManager.getInstance().insert(giftList);
    }
});

礼品清单

export class GiftList {

    personName: string = "";

    username: string = "";

    gifts: Gift[] = [];
}

为什么接收到的对象不同,正确的处理方法是什么?

我认为原因是你将 giftList 传递给 Meteor.call 的方式。传入 {giftList} 是 shorthand for { giftList: giftList }.

尝试以下操作:

Meteor.call("addGiftList", giftList, (err: any, res) => {});