Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递增地平线集合中的值_Javascript_Vue.js_Rethinkdb_Horizon - Fatal编程技术网

Javascript 递增地平线集合中的值

Javascript 递增地平线集合中的值,javascript,vue.js,rethinkdb,horizon,Javascript,Vue.js,Rethinkdb,Horizon,我正试图找出如何在horizon.io集合中执行递增值的基本任务。例如,我有一个标记,它可以表示一个UpVoces按钮,我希望UpVoces计数是持久的 <h1 @click="inc">{{foo}}</h1> <!-- foo is local variable --> <ul> <li v-for="message in me"> {{message.value}} <!-- message.

我正试图找出如何在horizon.io集合中执行递增值的基本任务。例如,我有一个
标记,它可以表示一个UpVoces按钮,我希望UpVoces计数是持久的

<h1 @click="inc">{{foo}}</h1> <!-- foo is local variable -->
    <ul>
      <li v-for="message in me">
      {{message.value}} <!-- message.value is upvote value from collection --> 
      </li>
   </ul>
然后,每次单击
标记时,我都会尝试更新该值:

inc(){
  me.update({
    id: 1,
    value: this.foo++
  })
}

如何更新集合中的值,以及是否必须在模板中呈现集合才能访问集合中的值?

首先,您可以通过使用新的<代码>此即使在函数的函数内,函数仍将使用最外层的

created(){
我的商店({
日期时间:新日期(),
值:this.foo//本地数据变量最初设置为0。
}).订阅(
结果=>console.log(结果),
error=>console.log(错误)
);
me.watch().subscribe((数据)=>{
data.map((数据)=>{
this.foo=data.value;
})
})  
},
您的增量
.update
函数看起来是正确的,但我会这样做:

inc(){
  this.foo++;
  me.update({
    id: 1,
    value: this.foo
  });
}
后修复和预修复可能会变得棘手,我不确定它是否会产生您期望的输出,因为它会

如何更新集合中的值,以及是否必须在模板中呈现集合才能访问集合中的值

如果我正确理解了这个问题,那么您就正确使用了
.update
,这样您就知道了!但根据我在Vue中的经验,您不必渲染集合就可以访问该值
this.foo
将在id为1的文档每次更改时重新分配。但是,如果您在最初
存储对象时未提供
id
,我们将为文档提供一个。因此,您的初始
.store
代码可能如下所示: 试一试{ 插入({ id:1, 日期时间:新日期(), 值:this.foo//本地数据变量最初设置为0。 }).订阅( 结果=>console.log(结果), error=>console.log(错误) ); }捕获(e){ log(“已存在!”,e); }

另外,您只想订阅对该文档的更改
id:1
document:

me.find(1.watch().subscribe((数据)=>{ data.map((数据)=>{ this.foo=data.value; }); });

这回答了你的问题吗

编辑:忘记,更改
。观看


EDIT2:将
.store
(每次都会覆盖数据)更改为
。insert
,如果文档不存在,它将插入,如果文档不存在,则会出错。我们想要这个功能,因为我们只想在它不存在时插入,如果存在则什么也不做,而不是覆盖
字段

将单击处理程序附加到从集合中获取的值时,我会出现奇怪的行为。增量有效,但更新后的值不会持续。如果我在一个浏览器中单击它,该值将增加,但如果我在另一个浏览器中打开它,该值将返回,但不一定返回到零。事实上,该值以不可预测的方式反弹。不确定这里发生了什么。我已经解决了奇数递增问题,但该值不存在。如果我刷新浏览器,值会回到零。嘿@MahmudAdam我犯了一个愚蠢的错误,以为你只会运行一次
.store
,但是如果你查看我上面的更新,你会发现我们想要使用
.insert
,并捕获它是否已经存在并继续运行。基本上,每次加载页面时,都会覆盖已经存在的文档,这就是为什么该值总是返回到零。
inc(){
  this.foo++;
  me.update({
    id: 1,
    value: this.foo
  });
}