Mongodb 文档插入时执行的函数
我正在尝试在服务器上实现以下伪函数。中的Mongodb 文档插入时执行的函数,mongodb,meteor,Mongodb,Meteor,我正在尝试在服务器上实现以下伪函数。中的likesRecievedlikesShown和likesMatch字段存在于Posts集合中的文档中 默认情况下,我需要为后期收集中的每个文档执行此功能。这是因为我喜欢这个函数来做这个 1)查找存在于likesRecieved和LikedShowed字段中的值 2)在likesMatch字段中插入这些值 likeMatch: function() { var selectedPostId = Session.get('postId'); /
likesRecieved
likesShown
和likesMatch
字段存在于Posts集合中的文档中
默认情况下,我需要为后期收集中的每个文档执行此功能。这是因为我喜欢这个函数来做这个
1)查找存在于likesRecieved和LikedShowed字段中的值
2)在likesMatch字段中插入这些值
likeMatch: function() {
var selectedPostId = Session.get('postId'); // _id of document in Post collection
var arrayOfLikeRecieved = Posts.find({_id: selectedPostId}, {fields: {LikesRecieved: 1}}).fetch();
var sumArrayRecieved = _.chain(arrayOfLikeRecieved).pluck('LikesRecieved').flatten().value();
var arrayOfLikeShown = Posts.find({_id: selectedPostId}, {fields: {LikesShown: 1}}).fetch();
var sumArrayShown = _.chain(arrayOfLikeShown).pluck('LikesShown').flatten().value();
var duplicates = _.intersection(sumArrayRecieved, sumArrayShown);
Meteor.call('insertDuplicateIntoMatchField', duplicates);
},
3)将操作1中的值从LIKESEVED和likesShown中删除
这就是我在服务器上要做的事情…
likesRecieved: idA, idB, idE, idF, idL
likesShown: idE, idC, idF
..perform a function to result in the following...
likesRecieved: idA, idB, idL
likesShown: idC,
likesMatch: idE, idF
这是我的代码,用于查找一个文档的两个数组中的ID。likeMatch helper返回Posts集合中选定文档中可能存在的“likesRecieved
”和“likesShown
”字段中的用户ID。然后将结果值插入likesMatch字段
likeMatch: function() {
var selectedPostId = Session.get('postId'); // _id of document in Post collection
var arrayOfLikeRecieved = Posts.find({_id: selectedPostId}, {fields: {LikesRecieved: 1}}).fetch();
var sumArrayRecieved = _.chain(arrayOfLikeRecieved).pluck('LikesRecieved').flatten().value();
var arrayOfLikeShown = Posts.find({_id: selectedPostId}, {fields: {LikesShown: 1}}).fetch();
var sumArrayShown = _.chain(arrayOfLikeShown).pluck('LikesShown').flatten().value();
var duplicates = _.intersection(sumArrayRecieved, sumArrayShown);
Meteor.call('insertDuplicateIntoMatchField', duplicates);
},
MongoDB不像其他数据库那样具有钩子,因此无法在插入文档时自动调用函数 不过,你有几个选择。一种方法是在应用程序中设置一个钩子,该钩子在插入文档以运行函数之前运行。这可以在meteor中通过使用
如果希望在mongodb中执行该函数,则必须手动调用该函数。问题在于如何知道文档是何时插入或更新的。幸运的是,meteor允许您访问光标。您可以使用它调用数据库,并在文档更新时运行存储过程(函数)。那么您是否想过在服务器上为MongoDB编写一些本机代码?可爱的下划线/lodash,但服务器做得更好。“忘却你所学”——聪明的绝地大师——这就是我的想法。因为我不知道从哪里开始,所以我在这里提出了这个问题。因此,一个相关文件的链接将非常有助于我的工作。谢谢你这解释很有帮助。我认为观察更改是最好的选择,因为我只需要在插入时执行函数。我将修改likesMatch字段如何使用添加的拒绝规则填充。谢谢所有20个问题