截至目前,我在\server\publications.js 中有我的 MongoDB“选择”,例如:
Meteor.publish("jobLocations", function () {
return JobLocations.find();
});
...并且正在订阅\client\main.js 中的内容,例如:
Meteor.startup(function() {
Meteor.subscribe("jobLocations");
. . .
...但是我在\both\methods.js 中有我的插入/更新/更新/删除,像这样:
Meteor.methods({
'insertJobLocation': function(username, jobLoc, placename, st8OrProvince, postalcode, xcoord, ycoord) {
JobLocations.insert({
jl_jobloc: jobLoc,
. . .
...我从\client\templates\whatever.js 调用它们,像这样:
'submit form': function(event, template) {
. . .
Meteor.call('insertJobLocation', jobloc, placename, st8OrProvince,
postalcode, xcoord, ycoord, function(err) {
. . .
这行得通,但它是错误的[-headed]吗?
所有 MongoDB 代码是否应该发布/订阅(IOW,位于\server\publications.js 和\client\main.js?
最佳答案
根据我的阅读,经验法则是订阅您需要在客户端浏览器上显示的内容。
这将返回 JobLocations
集合中的所有项目/字段,因此如果此集合很大,您可能希望限制使用 query
或 field
发布的内容> 参数:
之前:
Meteor.publish("jobLocations", function () {
return JobLocations.find();
});
一旦获得大量数据(或想隐藏敏感数据!):
Meteor.publish("jobLocations", function (jobLocParam) {
var selector = {
jobLoc: {$in: jobLocParam},
}
var options = {
sort: {placename: 1},
fields: {jobLoc: 1, placename: 1},
limit: 20
}
return JobLocations.find(selector, options);
});
所有这些字段都是可选的,但我想我会给你几个例子。 selector
可以只是 {}
如果您想要返回所有内容,并且您可以使用 fields
参数限制发布的字段(也是可选的) .发布也可以采用参数,因此如果您愿意,可以在创建模板时通过发布传递 jobLoc
或它们的数组。
希望对您有所帮助!
关于javascript - 是否应该发布 MongoDB 插入/更新/更新/删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869591/