Моя цель - вставить маркер устройства в db. Метод успешно выполняется на клиенте, но сбой на стороне сервера. Понятия не имею почему.Ошибка Meteor.methods на стороне сервера
// Библиотека/meteor_methods.js
Meteor.methods({
savePushTokens: function(myToken) {
console.log("Saving the token.")
Tokens.insert({token: myToken}, function(error, result) {
if (error) {
console.log(error);
}
else {
console.log(result);
}
});
console.log("Token is now saved!");
}
})
// клиент/push_notifications.js
...
function tokenSuccessHandler(result) {
console.log('token success result ' + result);
window.localStorage.setItem('deviceToken', result);
// API call to store token on your DB
Meteor.call('savePushTokens', result)
console.log(Tokens.find().fetch());
}
...
Пожалуйста, смотрите весь файл: https://github.com/mvaisanen/SimplePushApp/blob/pushplugin/client/push_notifications.js
Xcode консоли выход
2015-01-22 10:27:51.165 myapp[33366:5680153] token success result
077f2ea72eb6b2dfc381ce27f2eb12e2ee8ee68f7eeb90f7f2f10f1d99cd140e
2015-01-22 10:27:51.166 myapp[33366:5680153] Saving the token.
2015-01-22 10:27:51.166 myapp[33366:5680153] zp6vkrN5M4HtKF9NF
2015-01-22 10:27:51.166 myapp[33366:5680153] Token is now saved!
2015-01-22 10:27:51.166 myapp[33366:5680153] [{"token":"077f2ea72eb6b2dfc381ce27f2eb12e2ee8ee68f7eeb90f7f2f10f1d99cd140e","_id":"zp6vkrN5M4HtKF9NF"}]
Все кажется прекрасным.
Однако, если я запрашиваю базу данных внутри оболочки метеора, клиента или сервера, результатом является пустая коллекция. (> Tokens.find().fetch() []
).
Если я запускаю метод на стороне сервера, он на самом деле никогда не запускается. Смотри ниже.
// Библиотека/meteor_methods.js
Meteor.methods({
savePushTokens: function(myToken) {
console.log("Saving the token.")
if (Meteor.isServer) {
Tokens.insert({token: myToken}, function(error, result) {
if (error) {
console.log(error);
}
else {
console.log(result);
}
});
console.log("Token is now saved!");
}
}
});
Xcode консоли вывода
2015-01-22 10:32:59.290 myapp[33375:5681416] token success result 077f2ea72eb6b2dfc381ce27f2eb12e2ee8ee68f7eeb90f7f2f10f1d99cd140e
2015-01-22 10:32:59.291 myapp[33375:5681416] Saving the token.
2015-01-22 10:32:59.291 myapp[33375:5681416] []
Любая идея? Полный репо здесь https://github.com/mvaisanen/SimplePushApp/tree/pushplugin
UPDATE
У меня есть autopublish
и insecure
установлен.
Я запускаю приложение с meteor run ios-device --mobile-server 192.168.1.6:3000
.
Я могу вручную вставлять данные в db через раковину метеора или метеоритный монго.
Я также попытался проверить на жетоны в meteor mongo
:
$ meteor mongo
MongoDB shell version: 2.4.12
connecting to: 127.0.0.1:3001/meteor
meteor:PRIMARY> db.tokens.find();
meteor:PRIMARY>
Но я не получаю лексемы.
UPDATE 2
я не смог исправить ошибку. Существуют ли какие-либо простые (или сложные) приложения Meteor на github (или где-то еще), которые имеют Apple push-уведомления и которые я мог бы клонировать и таким образом находить решения.
Основной вопрос ... у вас есть «небезопасные» и «autopublish» пакеты установлены/удалены Если они будут удалены вам нужно? публиковать и подписываться на данные и иметь доступ на запись к коллекции. Сейчас вы успешно пишете клиенту minimongo. – benstr
Установлены как «небезопасные», так и «автоматические публикации». У меня действительно базовое приложение с push-уведомлениями. могу ли я получать push-уведомления, работающие. – Mika
У вас есть 'aldeed: simpleschema' или' aldeed: collection2' установлен? – richsilv