Javascript 使用Mongodb&;进行布尔切换;Node.js

Javascript 使用Mongodb&;进行布尔切换;Node.js,javascript,jquery,Javascript,Jquery,我遇到了一个切换逻辑被破坏的问题。 简单的待办事项列表,单击后,您将获得isCompleted的切换。对于第一个项目,它正好发生,但是,isDone的值似乎是随机的。 此外,如果刷新,更改的状态不会保持不变。但是,当I console.log更新返回的对象时,该字段已正确更改 函数updateTodo(任务){ //const updateUrl=“/api/todos/”+task.data(“id”); const isDone=!(任务数据(“已完成”); 常数更新数据={ isComp

我遇到了一个切换逻辑被破坏的问题。 简单的待办事项列表,单击后,您将获得isCompleted的切换。对于第一个项目,它正好发生,但是,isDone的值似乎是随机的。 此外,如果刷新,更改的状态不会保持不变。但是,当I console.log更新返回的对象时,该字段已正确更改

函数updateTodo(任务){
//const updateUrl=“/api/todos/”+task.data(“id”);
const isDone=!(任务数据(“已完成”);
常数更新数据={
isCompleted:isDone
};
//$.ajax({
//方法:“放”,
//url:updateUrl,
//数据:updateData
//})
任务。切换类(“完成”);
任务数据(“已完成”,isDone);
console.log(“task.data completed:”+task.data(“completed”));
}
//更改todo上的状态
$(“#待办事项列表”)。在(“单击”,“li”,函数()上){
updateTodo($(this));
});
正文{
字体系列:“Lato”,无衬线;
保证金:0;
填充:0;
背景色:#EFEF;
显示器:flex;
弯曲方向:立柱;
对齐项目:居中;
证明内容:中心;
}
标题{
边缘底部:20px;
宽度:50%;
文本对齐:居中;
}
收割台h1{
字号:3em;
颜色:紫色;
字号:500;
边缘底部:0px;
}
收割台h1跨度{
字号:800;
}
收割台h2{
字体大小:1.2米;
字体大小:400;
颜色:紫色;
}
部分{
宽度:50%;
文本对齐:居中;
填充:20px;
边缘底部:20px;
}
.包裹{
显示:内联块;
/*定心*/
位置:绝对位置;
左:50%;
保证金权利:50%;
转换:翻译(-50%,-50%);
}
输入{
/*清理*/
大纲:无;
边界:无;
填充:20px;
字体大小:24px;
/*定制*/
背景:透明;
边框底部:1px实心#fff;
颜色:紫色;
z指数:20;
}
.bg{
/*位置*/
位置:绝对位置;
最高:0%;
身高:100%;
宽度:0;
/*定制*/
背景:#fff;
过渡:宽度0.6s立方贝塞尔(0.52,-0.43,0.47,1.29);
z指数:-2;
}
输入:焦点+.bg{
背景:#fff;
宽度:100%;
}
输入::-webkit输入占位符{
颜色:#fff;
过渡:颜色。3s轻松;
}
输入:焦点::-webkit输入占位符{
颜色:透明;
}
/*名单*/
#待办事项清单{
宽度:50%;
列表样式:无;
保证金:0;
填充:0;
}
#待办事项列表李{
高度:60px;
线高:60px;
字号:1.5em;
背景色:白色;
利润底部:4倍;
盒影:1px 1px 1px银色;
颜色:紫色;
}
#待办事项列表李。完成{
背景色:#EFEF;
文字装饰:线条贯通;
盒影:无;
边框:1px实心浅灰色;
}
/*删除布顿*/
#待办事项列表li span.delete{
显示:内联块;
背景颜色:深红色;
颜色:白色;
文本对齐:居中;
高度:60px;
宽度:0px;
左:-60px;
右边距:20px;
过渡:0.2s缓进;
不透明度:0;
}
#待办事项列表li:悬停span.delete{
宽度:60px;
不透明度:1;
}

Todo API
待办事项
使用节点构建的简单待办事项列表
    XDebug代码
  • x试试这个
好吧,我的错。 我真的需要离开一点

事实上,我在检查布尔值时犯了一个错误。 在updateTodo函数中,我检查了对象字段,以代替分配给li任务的数据:

if (task.isCompleted) {
    task.addClass("done");
}
应该是什么:

if (task.data("completed") {
    task.addClass("done");
}

这里不需要包含后端代码,也不需要标记问题本身。您已经知道这不是问题所在,因此问题真正需要关注前端代码。这里很容易生成一个可验证的示例,但您根本不确定前端代码是否错误。当我检查数据库中对象的值时,它是混乱的。代码片段显示它在不调用api的情况下运行良好。