Mam zamiar użyć Meteoru do aplikacji rejestrującej w czasie rzeczywistym dla różnych Moje wymaganie jest całkiem proste, Przekażę komunikat Log jako żądanie Parametr (POST lub GET) z różnych aplikacji i Meteor wymaga po prostu aktualizacji kolekcji. Potrzebuję uzyskać dostęp do parametrów żądania w kodzie serwera Meteor i zaktualizować kolekcję Mongo za pomocą przychodzącego logMessage. Nie mogę aktualizować Mongo Collection bezpośrednio z istniejących aplikacji, więc nie proszę o odpowiedzi sugerujące to samo. Chcę wiedzieć, jak mogę to zrobić z frameworka Meteor, a nie robiąc tego, dodając kolejne pakiety.Jak uzyskać dostęp do parametrów zlecenia w systemie Meteor?
Odpowiedz
Może to ci pomoże? http://docs.meteor.com/#meteor_http_post
służy do tworzenia zewnętrznego postu HTTP, a nie przychodzących. – nubela
W obecnej sytuacji nie ma obsługi routingu po stronie serwera ani określonych działań po stronie serwera po trafieniu adresów URL. Więc nie jest łatwo robić to, co chcesz. Oto parę sugestii.
Prawdopodobnie można osiągnąć to, co chcesz przez pożyczanie technik, które są wykorzystywane przez pakiet
oauth2
na gałęzi logowania: https://github.com/meteor/meteor/blob/auth/packages/accounts-oauth2-helper/oauth2_server.js#L100-109Jednak nie jest to naprawdę obsługiwanych więc nie jestem pewien, że to dobry pomysł.
Twoje inne aplikacje mogą zaktualizować kolekcje za pomocą DDP. Jest to prawdopodobnie łatwiejsze niż się wydaje.
Można użyć aplikacji pośredniej, która akceptuje żądania POST/GET i rozmawia z serwerem meteorologicznym przy użyciu DDP. Jest to prawdopodobnie najłatwiejsze technicznie do zrobienia.
W rzeczywistości, Meteor Router _nie obsługuje tras po stronie serwera, oprócz bardziej popularnych po stronie klienta. Zobacz dokumentację na jego stronie github: https://github.com/tmeasday/meteor-router –
Haha, masz rację oczywiście, ale kiedy napisałem tę odpowiedź, nie dodałem jeszcze tej funkcji do routera;) –
znalazłem obejście dodać router do wniosku Meteor do obsługi żądań niestandardowych.
Używa oprogramowania pośredniego routera, które jest dostarczane z meteorytem. Bez dodatkowych zależności!
Umieść ten przed/poza Meteor.startup na serwerze. (Coffeescript)
SomeCollection = new Collection("...")
fibers = __meteor_bootstrap__.require("fibers")
connect = __meteor_bootstrap__.require('connect')
app = __meteor_bootstrap__.app
router = connect.middleware.router (route) ->
route.get '/foo', (req, res) ->
Fiber() ->
SomeCollection.insert(...)
.run()
res.writeHead(200)
res.end()
app.use(router)
Powinno to zostać udokumentowane na docs.meteor.com (przynajmniej do czasu, gdy pojawi się bardziej oficjalne rozwiązanie :) @Geoff –
dodać następujące informacje, jeśli chcesz użyć automatycznego zapytania i analizy treści: app.use (connect.query()) .use (connect.bodyParser()) –
Uwaga: od 0.6.0 to nie zadziała - chociaż spójrz na NPM.require ("..."); – emgee
EDIT: Updated używać Iron Router, następca Meteor routera.
Install Iron Router i określenie trasy po stronie serwera:
Router.map(function() {
this.route('foo', {
where: 'server',
action: function() {
doSomethingWithParams(this.request.query);
}
});
});
Więc do wniosku jak http://yoursite.com/foo?q=somequery&src=somesource
, zmienna this.request.query
w funkcji powyżej byłoby { q: 'somequery', src: 'somesource' }
i dlatego można zażądać poszczególnych parametrów poprzez this.request.query.q
i this.request.query.src
i tym podobne. Przetestowałem tylko żądania GET, ale POST i inne typy zgłoszeń powinny działać identycznie; działa tak jak Meteor 0.7.0.1. Kod ten należy umieścić wewnątrz bloku Meteor.isServer
lub w pliku w folderze /server
w projekcie.
Original post:
Zastosowanie Meteorite zainstalować Meteor Router i określenie trasy po stronie serwera:
Meteor.Router.add('/foo', function() {
doSomethingWithParams(this.request.query);
});
Więc do wniosku jak http://yoursite.com/foo?q=somequery&src=somesource
, zmienna this.request.query
w funkcji powyżej będzie { q: 'somequery', src: 'somesource' }
i dlatego możesz poprosić o indywidualne parametry poprzez this.request.query.q
nd this.request.query.src
i tym podobne. Przetestowałem tylko żądania GET, ale POST i inne typy zgłoszeń powinny działać identycznie; działa tak jak Meteor 0.6.2.1. Kod ten należy umieścić wewnątrz bloku Meteor.isServer
lub w pliku w folderze /server
w projekcie.
wiem, że pytający nie chce dodać pakietów, ale myślę, że za pomocą Meteorite zainstalować Meteor Router wydaje mi się bardziej przyszłościowe drogę do wdrożenia tego w stosunku do dostępu do wewnętrznych nielegalnych przedmiotów Meteor jak __meteor_bootstrap__
. Kiedy pakiet API zostanie sfinalizowany w przyszłej wersji Meteor, proces instalacji Meteor Routera stanie się łatwiejszy (nie będzie potrzeby korzystania z Meteorytu), ale nic innego nie ulegnie zmianie, a Twój kod prawdopodobnie nadal będzie działał bez konieczności modyfikacji.
Od Iron Routera = = 1.0, 'this.request.query' został wycofany z' this.params.query' – mrkre
@ Geoffrey-Booth Próbowałem przesłać dane z tarczy GSM i ta linia kodu ma POBIERZ Chciałbym po prostu zmienić go na POST, chociaż jest potrzeba "Meteor.call (" POST "lub czy Iron Router już sobie z tym poradził? 'Char request [] =" GET /test-get-post.php ? a = 1 & b = 2 HTTP/1.1 \ r \ nHost: test.libelium.com \ r \ nDługość: 0 \ r \ n \ r \ n "; ' – mjwrazor
Zastosowanie IronRouter, to takie proste:
var path = IronLocation.path();
- 1. Jak uzyskać dostęp do process.env w Meteor?
- 2. Jak uzyskać dostęp do parametrów zagnieżdżonych
- 3. Jak uzyskać dostęp do adresu IP klienta w Meteor?
- 4. Meteor, jak uzyskać dostęp do pomocnika z innego pomocnika?
- 5. Jak uzyskać dostęp do parametrów ciągu zapytania w asp.net mvc?
- 6. Jak uzyskać dostęp do parametrów adresu URL w bootstrapie
- 7. Dostęp Meteor baza produkcyjna
- 8. Dostęp do parametrów trasy w gałązce Szablon
- 9. Jak uzyskać dostęp do kompasu w systemie iOS?
- 10. Jak uzyskać dostęp do WinRM w C#
- 11. Meteor template.rendered i this.data dostęp
- 12. Jak uzyskać dostęp do zmiennych globalnych w szablonie Meteor bez pomocy pomocnika?
- 13. Jak uzyskać dostęp do RouteTable.Routes.MapHttpRoute?
- 14. Jak uzyskać dostęp do aplikacji?
- 15. Jak uzyskać dostęp do GetGlobalResourceObject()
- 16. Jak uzyskać dostęp do kontaktów użytkownika Gmaila?
- 17. Jak uzyskać dostęp i modyfikować kontakty w systemie Windows 8?
- 18. Jak uzyskać dostęp do ARGV w Mathematica?
- 19. Jak uzyskać dostęp do sesji w webmethod?
- 20. Jak uzyskać dostęp do mikrofonu w JS?
- 21. Jak uzyskać dostęp do kontenera autofac w kontrolerze ASP.NET MVC3?
- 22. Moq i dostęp do wywoływanych parametrów
- 23. Jak uzyskać dostęp do wartości parametrów w Returns() przy użyciu FakeItEasy?
- 24. Połączenie Meteor MongoDb w systemie Windows
- 25. Jak dodać nagłówki CORS do aplikacji Meteor?
- 26. W jaki sposób uzyskać dostęp do parametrów zapytań w serializatorze Django Rest Framework 3.0?
- 27. Jak uzyskać dostęp do książki adresowej iPhone'a w aplikacji internetowej?
- 28. Dostęp do dekodera wideo w systemie iOS?
- 29. Jak uzyskać dostęp do typów lambda w C++ 0x?
- 30. Meteor Iron Router Jak uzyskać dane POST
Nie jestem pewien, czy to jest możliwe, aby uzyskać dostęp do leżących u podstaw wystąpienia node.js. Ale jeśli możesz jakoś to złapać, szybkie 'app.post ('/', function (request, response) {});' zrobiłoby lewę. Po prostu pomysł, naprawdę nie mam pojęcia, czy to jest możliwe. –