如何用流星保存数据库中的值?

时间:2016-08-05 11:58:39

标签: meteor

在预先添加的代码中的meteor框架中,每次点击时计数器都会增加。如何使用mongodb保存值?

3 个答案:

答案 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});

希望这有帮助。