通过流星中的方法更新获取autoform中记录的_id

时间:2015-04-10 03:17:09

标签: mongodb meteor meteor-autoform

我正在使用autoform package用于meteor,但是当我尝试更新集合中的文档时,我似乎无法获取记录的_id来更新它。

我正在使用type=method-update的autoform,所以我可以验证服务器端。当我尝试下面的代码时失败,因为_id未定义。

模板:

{{#autoForm collection="Lessons" doc=lesson id="updateLessonForm"  type="method-update" meteormethod="updateLesson"}}
        <fieldset>
            {{> afFieldInput name="categoryId" firstOption="(Select a Category)" options=categoryOptions}}
            {{> afQuickField name='title'}}
            {{> afQuickField name='summary' rows=2}}
            {{> afQuickField name='detail' rows=1}}
            {{> afQuickField name='extras' rows=1}}
            {{> afQuickField name='active'}}
        </fieldset>
        <button type="submit" class="btn btn-primary btn-block">Update Lesson</button>
    {{/autoForm}}

服务器端方法:

updateLesson: function (doc) {
    check(doc, Lessons.simpleSchema());
    Lessons.update({_id: this._id}, doc);
}

更新:

doc._id returns undefined

doc returns:
I20150409-23:15:22.671(-5)? { '$set': 
I20150409-23:15:22.672(-5)?    { categoryId: 1,
I20150409-23:15:22.672(-5)?      title: 'Lesson 1 update',
I20150409-23:15:22.672(-5)?      summary: 'Summary for lesson 2',
I20150409-23:15:22.672(-5)?      detail: '<p>dsffdsfd</p>',
I20150409-23:15:22.672(-5)?      extras: '<p>fdsf</p>',
I20150409-23:15:22.672(-5)?      active: false } }

1 个答案:

答案 0 :(得分:2)

如果您打印文档,则应该获取该文档,因此this._id应更改为doc._id

注意:在进行更新之前,请尝试使用console.log查看您获得的值。

console.log(this._id)//should return undefined.
console.log(doc._id)//should return the id
console.log(doc)//should return the doc.

<强>更新

要获得_id,您应该调用第二个参数。

updateLesson: function (doc,doc_id) {
    check(doc, Lessons.simpleSchema());
    Lessons.update({_id: this._id}, doc);
}