【发布时间】:2015-10-30 16:26:58
【问题描述】:
我不知道我的代码有什么问题,我正在阅读 Discover Meteor 一书并构建了一个小应用程序来更好地学习这些概念:
Template.panelCM.events({
'click .editProductsCol': function(e) {
e.preventDefault();
if (confirm('Edit?')){
var currentProduct = this._id;
var productOptions = {
name: $(e.target).find('[name=productName]').val(),
description: $(e.target).find('[name=productDescription]').val()
};
Products.update(currentProduct, {$set: productOptions}, function(error) {
if (error) {
alert(error.reason);
throwError('Error');
} else {
Router.go('tabPage');
}
});
}},
'click .deleteProductsCol': function(e) {
e.preventDefault();
if (confirm("Delete?")) {
var currentProduct = this._id;
Products.remove(currentProduct);
Router.go('tabPage');
}
}});
删除部分效果很好,只是我不知道哪里出了问题的更新..
提交后它给了我这个错误:
MongoError: '$set' is empty. You must specify a field like so: {$mod: {<field>: ...}}
这是我的模板:
<template name="panelCM">
{{#each products}}
<div class="col-xs-12 col-sm-6 col-md-6 mainCol">
<img src="../{{image}}"/>
<input type="text" name="productName" id="productName" class="form-control" placeholder="{{name}}">
<textarea name='productDescription' id="productDescription" class="form-control colP" rows="10"
placeholder="{{description}}" style="color: black"></textarea>
<button type="submit" class="btn btn-lg btn-success form-control editProductsCol">Edit</button>
<button type="submit" class="btn btn-lg btn-danger form-control deleteProductsCol">Delete</button>
</div>
{{/each}}</template>
我做错了什么,我不太理解我认为的 productOptions var,如果我理解正确,我只是创建一个对象,该对象获取我放在该 html 元素上的任何内容,然后将其传递给我的 Products db 进行更新它,我不太明白的是,如果我还需要在模板上使用 id,我在 Discover Meteor 书中看到了它,但这没有意义,因为我找到了带有“名称”的正确元素(不知道那叫什么).. 另外,我在 productOptions 中使用的名称和描述应该与我在我的数据库中使用的名称和描述相同吧?
【问题讨论】:
-
在控制台上运行
$('[name=productName]').val()和$('[name=productDescription]').val()有什么收获?
标签: javascript mongodb meteor