我有一個應該做 CRUD 的應用程式,非常簡單。我想更新一本書的資訊,但它不起作用,我應該改變什么?另外我現在收到這個錯誤:
core.js:6210 錯誤型別錯誤:無法讀取未定義的屬性(讀取“值”)
后端代碼:
//EDIT ONE BOOK BY NAME
booksRoute.route('/edit/:name').put((req,res,next)=>{
BookModel.findOneAndUpdate(req.params.name,
{$set:false},
(error,data)=>{
if (error){
console.log(error);
return next(error);
}else{
res.json(data) ;
console.log('data updated successfully');
}
})
})
前端代碼:
<div id="bg"><div >
<ul>
<form #f="ngForm" (ngSubmit)="onSubmit(f)" ngNativeValidate>
<li>
<label>book's name *</label>
<input name="name" type="text" required>
</li>
<li>
<label>book's genre *</label>
<input name="genre" type="text" ngModel required>
</li>
<li>
<label>book's author *</label>
<input name="author" type="text" ngModel required>
</li>
<li>
<label>rating *</label>
<input name="rating" type="number" [max]="10" min="0" ngModel required>
</li>
<li>
<label>price *</label>
<input name="price" type="number" ngModel required>
<input type="submit"/>
</li>
</form>
</ul>
</div>
</div>
服務
//edit one book by it's name
editBook(name:string, data){
return this.http.put(this.backendUrl '/edit/' name,data) ;
}
編輯component.ts
onSubmit(f){
console.log("name value:" f.name.value)
this.apiService.editBook(f.name.value,f.value).subscribe( res => {console.log('backend\' response:',res)}) ;
}
uj5u.com熱心網友回復:
所以問題是您沒有指定要更新的欄位,請執行以下操作:
booksRoute.route('/edit/:name').put((req,res,next)=>{
BookModel.findOneAndUpdate({ name: req.params.name },
{$set: {
fieldname: false
}},
(error,data)=>{
if (error){
console.log(error);
return next(error);
}else{
res.json(data) ;
console.log('data updated successfully');
}
})
})
編輯:我已經更新了代碼確實有一個錯誤我沒有通過我已經更改的過濾器校正,所以現在它應該可以作業了。
此外,如果您想了解更多資訊,請訪問此站點
uj5u.com熱心網友回復:
最后我在閱讀檔案后找到了解決方案。我的代碼中有兩個明顯的錯誤,第一個是我沒有分配我將用來過濾更新請求的輸入欄位到 [(ngModel)] ('name')。所以在我的模板中是這樣的:
<li>
<label>book's name *</label>
<input name="name" type="text" [(ngModel)]="f.name" required>
</li>
下一個錯誤是 findOneAndUpdate 方法缺少請求正文,因此它應該像這樣作業:
//EDIT ONE BOOK BY NAME
booksRoute.route('/edit/:name').put((req,res,next)=>{
BookModel.findOneAndUpdate(req.params.name,req.body,
{new:true},
(error,data)=>{
if (error){
console.log(error);
return next(error);
}else{
console.log(data)
res.json(data) ;
console.log('data updated successfully');
}
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371272.html
