Meteor:记录数据库更新,但数据在屏幕上没有变化

时间:2015-04-01 15:02:54

标签: mongodb meteor modulus.io

这是我在其中一个模板中的简化版本:

{{#each dataRecord}}

{{#if editingNow}}

  <tr class="dataRow">
    <td><button class="updateRecord" id="{{this._id}}">SAV</button></td>
    <td><input type="text" id="{{this._id}}" value="{{this.f}}"></td></td>
  </tr>

  {{else}}

  <tr class="dataRow">
    <td><button class="edit" id="{{this._id}}">EDIT</button></td>
    <td>{{this.f}}</td> 
    <td><button class="deleteRecord" id="{{this._id}}">DEL</button> </td>
  </tr>

{{/if}}

{{/each}}

editingNow返回布尔会话变量的值,该值以false开头。因此,当页面加载时,用户会看到“f&f”的值。每个记录的字段和EDIT按钮。 EDIT按钮将会话变量翻转为true,然后使用输入元素显示数据。用户可以编辑数据并单击按钮,该按钮现在是一个SAVE按钮。该按钮使用_id更新记录,并将会话变量翻转为false。

就编辑数据的工作而言 - 记录肯定会更新。我可以检查控制台中的值,看看它是否已被更改。但是,表中显示的数据将恢复为原始值。我可以非常简短地看到该字段中显示的更改,然后它会翻转。甚至更奇怪,如果我再次单击“编辑”按钮,表格仍会显示旧值。查看该字段中更新数据的唯一方法是重新启动应用程序。

当我使用我的本地mongo数据库或在meteor.com上链接到我的数据库时,这个问题从未发生过。自从我将应用程序移至modulus.io后,这才开始发生。有什么想法吗?

更新 虽然我无法弄清楚导致模板中反应更新问题的原因,但在Ethaan的帮助下,我能够更好地了解问题并找到解决方法,所以我接受了答案,希望我们最终能够达到最低点。

1 个答案:

答案 0 :(得分:2)

好像你有一些allow/deny个问题?

尝试

Collection.allow({
 insert:function(){return true;},
 remove:function(){return true;},
 update:function(){return true;},
})

或者检查与数据库的连接是否成功,转到admin panel on modulus

选项2

清理数据库并在服务器端进行虚拟插入。

首先在meteor shell上运行meteor reset

OR 如果您的应用程序位于modulus.io,请使用mongo shell,然后使用此代码。

db.getCollectionNames().forEach(function(name) {
  if (name.indexOf('system.') === -1) {
    db.getCollection(name).drop();
  }
})

现在,当您确定数据库为空时,请将其放在服务器端。

//Server Code.
    Meteor.startup(function(){
      if(Collection.find().count() == 0){
        Collection.insert({serverInsert:"test from server"},function(err,result){
         if(!err){
          console.log("insert succefull")
        }
     })
    }
  })