使用MEAN堆栈时,遇到了一些问题,试图通过PUT方法更新我的数据。为什么MongoDB在表单中以ng-click的形式发出E11000重复密钥错误
我有一个非常简单的角形式:
<form ng-submit="vm.createQuote()">
<label>Author</label>
<input type="text" ng-model="vm.quote.author">
<label>Text</label>
<textarea cols="30" rows="4" ng-model="vm.quote.text"></textarea>
<button type="submit">CREATE</button>
<button ng-click="vm.updateQuote()">UPDATE</button>
</form>
我使用Express和猫鼬(MongoDB的)一个节点应用。我使用POSTMAN测试了REST Api。一切工作正常在后端。
当我尝试使用表单更新按钮更新某个报价(触发$ http.put),我得到一个MongoDB的错误:
MongoError: E11000 duplicate key error index: mydb.quotes.$_id_ dup key: { : ObjectId('55acecfcee620c7a04e9641c') }
虽然我得到这个错误,我的数据是正确更新在DB中。这个问题必须来自Angular,因为通过POSTMAN,我的所有HTTP请求都可以完成而不会出错。我检查了我的请求(通过Postman & Angular)具有相同的标题和正文。
任何想法为什么我的请求在POSTMAN中工作,而不是在我的Angular应用程序中?
你发送对象与ID?例如,您是使用现有对象填充表单,然后尝试使用修改后的数据插入相同的对象?如果是这样会导致ID冲突 –
是的,显然表单元素正在发送包含已存在ID的对象的POST。 –