Я не уверен, что я просто делаю что-то не так или это на самом деле не работает. Я хочу отобразить исходную ошибку публикации на клиенте, если я ее поймал:
Meteor.publish('somePub', function (args) {
const self = this
try {
// ... publication logic
catch (pubErr) {
self.error(pubErr)
}
})
На клиенте я ловлю эту ошибку через обратный вызов onStop
:
Meteor.subscribe('somePub', args, {
onStop: function (e) {
// display e to user
}
})
Однако на сервере pubErr
является Meteor.Error
и согласно документации он должен быть отправлен клиенту, клиент просто получает общее очищенное сообщение об ошибке:
на сервере
{
stack: "useful stack of actual method calls",
error: "somePub.failed",
reason: "somePub.invalidArguments",
details: { arg: undefined }
}
на клиенте
{
stack: "long list of ddp-message calls",
isClientSafe: true,
error: 500,
reason: "Internal server error",
details: undefined,
message: "Internal server error [500]",
errorType: "Meteor.Error"
}
Примечание. Я также пытался добавить ошибку к себе как поле sanitizedError
, как указано в документации, но безуспешно.
Я что-то упустил здесь?
Meteor.Error
, а не пересылаетеpubErr
? Кроме того, что вы используете, чтобы вызвать ошибку публикации? -- только так другие могут воспроизвести. - person Christian Fritz   schedule 14.08.2020