在我的Meteor应用程序中,如何使用替换旧数据的新数据更新集合中的对象

时间:2014-02-26 12:10:57

标签: javascript meteor

在我的Meteor应用程序中,我在更新插入的数据时遇到问题。

在控制台中,键入MyCollection.insert({sometext: "hello"});我为某些文本插入“hello”。现在,您可以在下面的代码中看到,带有infoOutput的模板{{output.sometext}}会返回我插入的内容。

我输入时在控制台中:

MyCollection.update(this._id, {sometext: "hi again"});我回来了“未定义”。我只是想尝试更新我在数据库中为某些文本设置的字符串,这是“hello”,新字符串“hi again”或者我想要的任何其他内容。我只需要在控制台中键入内容而不是MyCollection.update(this._id, {sometext: "hi again"});,或者如果这不是问题,我想知道是什么,以及我可以做些什么来解决它。

我很感激帮助。感谢

在我的client.js文件中,我有:

MyCollection = new Meteor.Collection('MyCollection');
if(Meteor.isClient){
    Template.infooutput.output = function() { 
           return MyCollection.findOne(); 
    }
}

在我的server.js文件中,我有:

MyCollection = new Meteor.Collection('MyCollection');
if (Meteor.isServer) {
}

我有一个模板:

<template name="infoOutput">
<div id="outputText">
{{output.sometext}} 
</div>
</template>

然后在我的主页

<body>
{{>infoOutput}}
</body>

2 个答案:

答案 0 :(得分:1)

在控制台中this是窗口对象,不具有_id属性。相反,您应该获得所需的集合光标的显式引用:

var theId = MyCollection.findOne()._id;
MyCollection.update({_id: theId}, {$set: {sometext: "hi again"}});

答案 1 :(得分:0)

尝试MyCollection.update(this._id, {$set: {sometext: "hi again"}}); for size.