Метеоритный метод для отправки публичного документа MongoDB без публикации всего
Плохо знакомы с метеором и монго.
У меня есть некоторые JSON, хранящиеся в Монго, которые я хочу публично представить через запутанный токен, не используя что-то вроде:
//app/models/stuff.js
Stuff = new Mongo.Collection("stuff");
Meteor.publish("stuff", function (){
return Stuff.find();
});
//additionally, the client-side subscription
Я хочу предоставить только те файлы, которые клиент запрашивает напрямую через параметр маршрутизации URL или какой-либо идентификатор на стороне клиента (например, текстовое поле, в котором вы можете ввести код / токен)
например, http://website.com/view/abcdefghijklmnop
Любой, кто знает ссылку, может набрать ее и получить файл. Однако не должно быть способа просто получить каждый файл, не получив каждый токен.
Мне было интересно, если это был лучший способ выполнить задачу:
//app/server/stuff.js
Meteor.methods({
getStuff: getStuff
});
function getStuff(stuffId) {
var result = Stuff.find({_id: stuffId});
return result;
}
затем
//app/client/stuff.js
var json = Meteor.call('getStuff', 'abcdefghijklmnop');
1 ответ
Решение
Почему бы просто не опубликовать запрошенный документ?
Meteor.publish('stuff', function (id){
check(id, String);
return Stuff.find(id);
});