Конструкторы поддержки Meteor E JSON - PullRequest
2 голосов
/ 07 мая 2020

Я хотел бы отправить конструкторы через EJSON через методы:

сервер. js

Meteor.methods({
  'testConstructor' (doc) {
    console.log(doc) // {}
  }
})

клиент. js

Meteor.call({ type: String })

Я думал о добавлении типов через EJSON.addType, но в настоящее время он поддерживает только экземпляры , а не конструкторы. Я попытался обернуть конструктор String внутри такого класса:

Meteor.startup(function () {
  class StrWrap {
    constructor (val) {
      this.val = val
    }

    toJSONValue () {
      return {
        value: this.val
      }
    }

    typeName () {
      return String.name
    }
  }

  EJSON.addType(String, function (json) {
    return String
  })

  const str = EJSON.stringify({ type: String})
  console.log(str) // {}
})

По-прежнему нет шансов. В проблеме , связанной с , было упомянуто, что E JSON поддерживает String, Number et c. но я думаю, что это было нацелено на экземпляры этих классов.

В настоящее время я работаю над этим, используя собственный JSON заменитель для JSON.stringify и преобразователь для JSON.parse, но это добавляет полный уровень преобразования для каждого взаимодействия протокола DDP, и я хотел бы поддерживать конструкторы из коробки, чтобы я мог отправлять схемы для обнаружения служб.

...