在预先添加的代码中的meteor框架中,每次点击时计数器都会增加。如何使用mongodb保存值?
答案 0 :(得分:1)
在服务器端创建一个集合来保存数据:
Meteor.isServer {
Counter= new Mongo.Collection('Counter');
// Server side method to be called from client
Meteor.methods({
'updateCounter': function (id) {
if(typeof id && id) {
return Counter.update({_id: id}, {$set: {counter: {$inc: 1}}});
} else {
return Counter.insert({counter: 1})
}
}
})
// Publication
Meteor.publish("counter", function () {
Counter.find();
})
}
您可以在客户端订阅数据:
Meteor.isClient{
Template.yourTemplateName.created = function () {
Meteor.subscribe('counter');
}
Template.yourTemplateName.heplers( function () {
counter: function () {
return Counter.findOne();
}
})
Template.yourTemplateName.event( function () {
'click #counterButtonIdName': function () {
if(Counter.findOne()) {
Meteor.call('updateCounter', Counter.findOne()._id);
} else {
Meteor.call('updateCounter', null);
}
}
})
}
Html示例
<template name="yourTemplateName">
<span>{{counter}}</span> //area where count is written
</template>
通过这种方式,您可以实现数据的安全服务器端处理,并且计数将持续存在,直到您在数据库中有数据为止。另外,通过这种方式,您可以学习Meteor的基础知识。
答案 1 :(得分:0)
只需upsert
即可收藏。这里是if (Saves.find({_id: Meteor.userId()})){
Saves.update( {_id: Meteor.userId()}, {save: save} )
console.log("Updated saves")
}
else {
Saves.insert(save)
}
(即如果存在则更新,如果不存在则插入)函数:
{{1}}
答案 2 :(得分:0)
如果autopublish
包存在,您只需创建一个Mongo.Collection
并将此计数器插入数据库:
var myCounter = 5;
var collection = new Mongo.Collection('collection');
collection.insert({counter: myCounter});
希望这有帮助。