【发布时间】:2014-06-07 15:08:50
【问题描述】:
我有两个使用相同数据库的流星应用程序,一个是移动应用程序(主要),另一个是桌面应用程序。
我想从桌面应用调用远程移动方法来创建列表,这样我就不必重复代码'Listing.create'。
我假设我在桌面应用程序上登录的Meteor.userId 会在调用远程移动方法时被转移,但事实并非如此,因为它是未定义的。
我也有 Oauth 和电子邮件身份验证,但似乎没有一种简单的方法可以使用 OAuth 登录(通过调用“登录”登录非常适合密码)。
调用远程方法的最佳方法是什么,因为它没有登录就失败了?我想我可以将 userId 作为字符串传递,但这会打开该方法以进行黑客攻击
Mobile server, m.foo.com, MONGO_URL bar.com
Meteor.methods({
'Listing.create': function(){
if (!this.userId) throw new Meteor.Error(503, 'No user account');
...
db.listings.insert(...);
}
})
// on client
Meteor.userId() // 1234
Desktop server, foo.com, MONGO_URL bar.com
MobileDDP = DDP.connect('http://m.foo.com')
MobileDDP.call('Listing.create', function(err, res) {
console.log(err, res)
});
【问题讨论】: