Обработка ошибок в Meteor.js с помощью SimpleSchema - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над проектом, разрабатываемым Meteor.js, и сейчас я работаю над проверкой чего-то подобного

import SimpleSchema from 'simpl-schema';

const CompanySchema = new SimpleSchema({
    company_name: {
        type: String,
        min: 5,
        max: 50,
        label: "Company Name"
    }
});

Company.attachSchema(CompanySchema);

, но в консоли показано, как показано ниже изображение

enter image description here

, но при попытке сохранить «Ошибка» следующим образом

console.log(err.Error);

показывает

undefined

здесь есть функции вставки

Company.insert(
    {
        company_name: inputs.companyName.value,
    },
    function(err) {
        if (err) {
            console.log(err);
        } else {
            console.log('Inserted successfully');
        }
    }
);

в чем проблема на самом деле.

Спасибо

1 Ответ

0 голосов
/ 05 марта 2019

При сбое вставки Mongo на стороне клиента выдается native Error.Если вы регистрируете это name, message и stack, оно показывает ожидаемые свойства Error:

Company.insert(
    {
        company_name: inputs.companyName.value,
    },
    function(err) {
        if (err) {
            console.log(err.name);
            console.log(err.message);
            console.log(err.stack);
        }
    }
);

Производит:

Error 
Company Name must be at least 5 characters in company insert
Error: Company Name must be at least 5 characters in company insert
    at getErrorObject (collection2.js:498)
    at doValidate (collection2.js:470)
    at Collection.Mongo.Collection.(:3000/anonymous function) [as insert] (http://localhost:3000/packages/aldeed_collection2.js?hash=9ed657993899f5a7b4df81355fd11d6b77396b85:286:14)
    at Blaze.TemplateInstance.helloOnCreated (main.js:10)
    at blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3398
    at Function.Template._withTemplateInstanceFunc (blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3769)
    at fireCallbacks (blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3394)
    at Blaze.View.<anonymous> (blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:3474)
    at fireCallbacks (blaze.js?hash=51f4a3bdae106610ee48d8eff291f3628713d847:2014)
    at Object.Tracker.nonreactive (tracker.js:603)

Атрибут err.error напротив, это часть Meteor.Error, которая выбрасывается, если вставка терпит неудачу внутри Метеоритного метода .

Это может иметь место, например, в таких случаях.код:

Meteor.call('someInserMethod', { company_name: 'abc' }, (err, res) => {
  console.log(err) // this error is a Meteor.Error
})
...