在 meteor 中的方法更新中获取 autoform 中记录的 _id
Getting the _id of the record in autoform on a method-update in meteor
我正在使用 meteor 的 autoform package,但是当我尝试更新集合中的文档时,我似乎无法获取记录的 _id
来更新它。
我将自动表单与 type=method-update
结合使用,因此我可以在服务器端对其进行验证。当我尝试下面的代码时,它失败了,因为 _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 } }
如果你打印doc,你应该得到文档,所以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);
}
我正在使用 meteor 的 autoform package,但是当我尝试更新集合中的文档时,我似乎无法获取记录的 _id
来更新它。
我将自动表单与 type=method-update
结合使用,因此我可以在服务器端对其进行验证。当我尝试下面的代码时,它失败了,因为 _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 } }
如果你打印doc,你应该得到文档,所以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);
}