Учебное пособие действительно устарело и должно быть обновлено.
Справочная информация
В июне 2017 года произошла большая проблема безопасности с выявленными разрешением / отказом иС тех пор эта функция была заблокирована.
Meteor позволил вам определить коллекцию клиентов, которая автоматически синхронизируется с сервером при вызове методов insert
, update
, remove
на клиенте.
Для управления правами доступа была реализована функция разрешить / запретить .
Теперь без разрешения / запрета вы получите insert failed: Method '/tasks/insert' not found
при классификации SomeCollectionOnClient.insert
, но, поскольку эта функция устарела (вы даже получите большое предупреждение при ее настройке), вам нужно создать сторону сервераметод и вызовите его из клиента, чтобы решить эту проблему:
На сервере создайте этот метод и убедитесь, что он находится в цепочке импорта из server/main.js
:
new ValidatedMethod({
name: 'tasks.insert',
validate(args) {
// better use simpl-schema here
if (!args.text || !args.createdAt) {
throw new Meteor.Error('incompleteArgs', 'args are incomplete')
}
},
run (args) {
// check user permissions...
return Tasks.insert({ text, createdAt })
}
})
В вашем клиентекомпонент, который затем можно вызвать через:
// find the text field via the react ref
const text = ReactDOM.findDOMNode(this.refs.textInput).value.trim();
Meteor.call('tasks.insert', {text, createdAt: new Date()}, (err, res) => {
// do something on err / on res
})
Обратите внимание, что это связывает ваш компонент с методом на стороне сервера, и вы можете попытаться реализовать некоторые контейнеры для ваших страниц, которые обрабатывают все соединения / pub-sub /активность вызова метода, когда ваши компоненты только визуализируют содержимое.
Подробнее для чтения / использования в этом ответе:
https://guide.meteor.com/react.html
https://guide.meteor.com/security.html
https://docs.meteor.com/api/methods.html#Meteor-call
https://guide.meteor.com/methods.html#validated-method