javascript - 如何使用_id检查mLab中是否存在对象?
问题描述
我正在开发一个带有 node.js 后端的 Angular 应用程序,我的架构如下所示:
前端 => angular.service => 节点后端 => mLab DB
目前,我正在尝试将一个对象推送到数据库中,前提是它尚不存在。如果它已经这样做了,它应该更新。可以通过我前端卡片中的按钮访问此功能。
为了更清楚地理解这里是我的一些代码。
前端:admin-edit-home.component.html
<a mdbBtn class='btn btn-md btn-primary' mdbWavesEffect (click)="addCard()">Add</a>
上面的代码是一个按钮,我可以在其中向界面添加卡片。下面的 TS 显示了代码的工作原理。
前端:admin-edit-home.component.ts
addCard() {
this.carousels.push(this.carousels.length);
}
为了解释 TS 代码,'carousels' 是一个数组,我用它在我的 HTML 中执行 *ngFor 循环,其中它以卡片格式显示数据。它被声明为:
carousels: any = [];
因此,在将长度推送到“轮播”数组时,它会显示一张没有收集数据的空卡片,但仍拥有原始卡片中的 HTML 元素,其中包含我想要的假定更新功能。
我的问题是,如何从后端检查对象是否存在并将结果呈现回前端?我试过这个,
后端:api.js
router.route('/carousel/update/:id').put(function(req,res) {
var data = req.body;
const myquery = { _id: ObjectId(req.params.id) };
db.collection('home').updateOne(myquery, {
$set: {
"header" : data.header,
"subheader" : data.subheader,
"img" : data.img
}
})
if (myquery === -1) {
arr.push(obj);
} else {
arr[myquery] = obj
}
}
我知道我的后端代码是错误的并且不起作用,但我只是想让你们对我的逻辑试图实现的目标有一个可视化。
此外,我的 Angular 服务现在应该可以通过下面的这段代码访问这个后端代码:
家庭服务.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable ({
providedIn: 'root'
})
export class HomeService {
constructor(private http: HttpClient) {}
updateCard(id: string, header: string, subheader: string, img: string) {
var json = {id: id, header: header, subheader: subheader, img: img}
return this.http.put<any[]>(`./api/carousel/update/${id}`, json);
}
}
在尝试了这些事情之后,为了以更简洁的方式总结我的问题,我需要通过 ObjectId 从数据库中检查对象是否已经存在,然后通过我的输入字段更新它,但如果不存在,updateCard() 应该创建另一个我的数据库中的对象。我希望得到帮助!
编辑
router.route('/carousel/update/:id').put(function (req, res) {
var data = req.body;
const myquery = { "_id": ObjectId };
// console.log('header: ' + data.header + " id: " + data.id)
console.log(req.params)
db.collection("home").updateMany(myquery, {
$set: {
"img" : data.img,
"header" : data.header,
"subheader": data.subheader
}
}, (err, results) => {
res.status(200).json({status: "ok"})
})
})
这是新的api.js。请参考。
解决方案
推荐阅读
- javascript - 当我按下“提交按钮”时,JavaScript 代码未执行
- c# - 在 Uno 共享项目中使用 WinUI 2.3
- c# - 无法从 mvc 中的 url 参数中获取值
- mysql - docker:使用特定的 uid:gid 运行 mysql 容器
- windows - 当变量中有空格时如何在一行上运行多个命令
- java - 当应用程序在后台时,如何在 BaseActivity 中使用 onPause 停止音乐(MediaPlayer)
- docker - 是否可以将 microk8s 设置为使用 docker 引擎而不是 containerd?
- java - 在 Java 中将子类对象添加到具有继承的超类数组中
- python - 如何仅选择缺失值来测试模型?
- css - 如何从 Eclipse CSS 样式中排除对话外壳?