Could I use "res.setHeader, res.statusCode" in Meteor.methods()?


#1

Could I use “res.setHeader, res.statusCode” in Meteor.methods()?

Meteor.methods({
    exportDump: function () {
     var res = .............;
      res.statusCode = 200;
      res.setHeader('Content-disposition'....................)

      return ........;
    }
});

#2

There is no HTTP request so it doesn’t make any sense. Most of those calls are send over the Websocket.

If you would like to handle error with Meteor.call, you can throw errors within your methods. It seems to be the best practice.


#3

Thanks for your reply, I don’t want to use Server Router in my package.
How to solve this.


#4

Hi, it is not clear why you need such feature inside Meteor.methods? Could you explain the use case?


#5

I create backup-restore Meteor Package via mongodb-backup NPM package.
But I don’t want to use router to response the backup.tar file like this

res.writeHead(200, {
    'Content-Type': 'application/x-tar' // force header for tar download
  });

  backup({
    uri: 'uri', // mongodb://<dbuser>:<dbpassword>@<dbdomain>.mongolab.com:<dbport>/<dbdatabase>
    collections: [ 'logins' ], // save this collection only
    stream: res, // send stream into client response
  });

So I want to use Methods.


#6

You cannot use http server features like streams with Methods. Methods work with DDP messages over websocket in common. So it is more suitable to use some Router (connect) for the issue.


#7

If you do not want to include any external router package you can use core WebApp package and handle routes with connect. See Webapp docs


#8

Thanks, good look :smiley:
But I don’t see how to get the params/query.


#9

you should use node.js core url or any connect middleware as Meteor or any routing package does.