Метеор: "Невозможно прочитать свойство" _id "из неопределенного" при вызове метода вставки из клиента
Я получаю "TypeError: Невозможно прочитать свойство" _id "из undefined", когда я пытаюсь использовать метод Meteor на клиенте, который вставляет объект в коллекцию Mongo. Я использую Collection2-core и Validated Method. Код на стороне клиента, который пытается вызвать метод:
import { submitNewEvent } from '../../../api/events/events';
const newEvent = {
eventName: "A String",
eventDescription: "A String",
eventPosition: {lat: 40, lng: -70},
};
submitNewEvent.validate(newEvent);
submitNewEvent.call(newEvent, (err, res) => {
if (err) {
console.log(err);
} else {
console.log(res);
}
});
И Метод / Коллекция определяется в модуле import /api/events.js:
import { ValidatedMethod } from 'meteor/mdg:validated-method';
import eventSchema from './eventSchema';
Events = new Mongo.Collection('events');
Events.attachSchema(eventSchema);
export const submitNewEvent = new ValidatedMethod({
name: 'submitNewEvent',
validate: eventSchema.validator(),
run({newEvent}) {
Events.insert(newEvent);
}
});
Сама eventSchema не указывает поле _id, но все остальные поля проверяются. Любопытно, что когда я пытаюсь выполнить прямую вставку того же объекта в коллекцию с сервера при запуске, он работает нормально и проблем нет. Что может быть причиной этой проблемы из-за метода?
Весь текст ошибки:
TypeError: Cannot read property '_id' of undefined
at Mongo.Collection.doValidate (http://localhost:3000/packages/aldeed_collection2-core.js?hash=18cc61915c0e22cac3180c5c8c9e0ac91bdd188a:372:33)
at Mongo.Collection.(anonymous function) [as insert] (http://localhost:3000/packages/aldeed_collection2-core.js?hash=18cc61915c0e22cac3180c5c8c9e0ac91bdd188a:259:25)
at DDPCommon.MethodInvocation.run (http://localhost:3000/app/app.js?hash=b893ac14f5773e1f67641becf8b78b71756ca168:948:16)
at ValidatedMethod._execute (http://localhost:3000/packages/mdg_validated-method.js?hash=0d0a63069b7327e1e04768f607f0db947dfe949d:130:45)
at DDPCommon.MethodInvocation.ValidatedMethod.connection.methods._connection$methods.(anonymous function) (http://localhost:3000/packages/mdg_validated-method.js?hash=0d0a63069b7327e1e04768f607f0db947dfe949d:90:21)
at http://localhost:3000/packages/ddp-client.js?hash=df770fd9a6a02fd730939b97d266ea2b12938e95:4088:25
at Meteor.EnvironmentVariable.EVp.withValue (http://localhost:3000/packages/meteor.js?hash=6d285d84547b3dad9717a7c89c664b61b45ea3d8:1090:15)
at Connection.apply (http://localhost:3000/packages/ddp-client.js?hash=df770fd9a6a02fd730939b97d266ea2b12938e95:4079:60)
at ValidatedMethod.call (http://localhost:3000/packages/mdg_validated-method.js?hash=0d0a63069b7327e1e04768f607f0db947dfe949d:103:32)
at MapComponent.newEventSubmitted (http://localhost:3000/app/app.js?hash=b893ac14f5773e1f67641becf8b78b71756ca168:415:28)
1 ответ
Выяснил, каков был ответ, благодаря подсказке Buzz Moschetti! У метода были угловые скобки вокруг newEvent, который сам по себе уже являлся объектом, поэтому документ терялся на пути к коллекции.