我要做的是采用用户的查询客户端(通过搜索功能),通过Meteor方法将其发送到服务器,如果有搜索结果,将该查询插入另一个MongoDB实例?我需要这个,以便将用户的搜索结果显示到客户端。
来自服务器端的类似内容:
UserSearch: function(query){
var init = Table.find({userId: this.userId}, {data: {Name: query}});
Search.insert({userId: this.userId, data: init});
},
显然,这不起作用。但我正在寻找一种允许将查询从一个数据库插入新数据库的方法。
答案 0 :(得分:1)
所以我认为这里有两个问题:
对于#1,引用this SO question,您可以执行以下操作:
var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
Search = new Mongo.Collection("search", { _driver: database });
对于#2,你只是错过了.fetch()
,正如MasterAM所指出的那样:
UserSearch: function(query){
var init = Table.find({userId: this.userId, 'data.Name': query}).fetch();
Search.insert({userId: this.userId, data: init});
},
我还修改了你的表查询,因为我认为它不适用于当前表单。您希望查询对象中的每个字段属性都在同一个对象中。请注意,fetch会为您提供一个Table对象数组,因此您需要让Search集合中的data
字段反映出来。