node.js - 如果选中复选框,我如何使用平均堆栈中的复选框更新我的待办事项状态,它将 true 放在 mongodb 数据库中,否则 false
问题描述
app.component.ts
调试器给出 this.task 未定义的错误
updateTodo(task: any){
this.todoService.updateData(task._id, this.task).subscribe(res => {
this.data= res;
console.log(res);
console.log(this.task);
});
}
应用服务.ts
这是在我的角度应用程序中调用后端 api 的服务文件
updateData(id: any , data: any){
return this.httpClient.put('http://localhost:3000/todos/'+id, data);
}
app.component.html
这是我的应用程序的前端,其中显示待办事项和其他用户界面
<tbody>
<tr *ngFor="let todo of tasks ; let i = index">
<td>{{todo.todos}}</td>
<td> <input type="checkbox" (change)="updateTodo(todo)"[checked]="todo.isDone</td>
<td>
<button class="btn btn-danger btn-sm" id="del-btn"
(click)="deleteData(todo._id)">Delete</button>
</td>
</tr>
</tbody>
app.model.ts
这是模型文件
export class Todo {
_id:any;
todos:any;
isDone:any;
}
后端API
这是我创建的用于更新我的 todo 的 backedn 函数
router.put('/:id' , async (req,res) => {
const id = req.params.id;
if(ObjectId.isValid(id)){
const todo = (req.body);
const todoUpdate = await Todo.findByIdAndUpdate(id ,{$set:emp}, {new:true});
res.status(200).json({code:200, message:'Todo Updated Successfully'});
}
else{
res.status(400).send('Todo Not Found By Given Id' + id);
}
});
解决方案
我不确定我们是否相互理解,但是您将 .task
作为参数传递,但有两次您尝试使用this.task
. 它们不是一回事,如果this.task
没有初始化,那么它当然会显示它是undefined
.
updateTodo(task: any) {
console.log('task:', task); // Is the task correct?
this.todoService.updateData(task._id, task).subscribe(res => {
this.data = res;
console.log(res);
console.log(task); //not this.task
});
}
编辑:如果数据库未更新,您可能会在那里发送不正确的数据。如果 Angular 端没有错误,则必须检查后端端。
推荐阅读
- sql - Oracle中的SQL - 如何搜索间隔中的事件?
- ios - Flutter 构建 iOS
- python - 在python3中更改方法的属性
- python - Django - 装饰器限制“员工”
- c# - 无法将数据从视图传递到控制器 ASP.NET MVC 5
- netbeans - 从 Apache Ant 构建 Netbeans
- html - 如何在 display:flex 结构中的其他 2 个项目之间水平对齐文本?
- algorithm - 在无向图中查找关键连接(桥梁)。我的方法不是线性时间吗?
- php - PHP错误:未加括号的`a?乙:丙?d : e` 已弃用。使用 `(a ? b : c) ? d:e`或`a?b : (c ? d : e)`
- sql - 查找交易列表的新日期