javascript - 在 Loopback 模型中将数据推送到数组中
问题描述
我是 Loopback 的新手,正在从事一个具有以下模型和文档的项目。
{
"_id" : ObjectId("5c9b44cc618c1bbe8780e38b"),
"userId" : ObjectId("5bae3ea215e11e0018b914c1"),
"providers" : [
"1629132790",
"1467401216",
"1356405641",
"1952465288",
"1447314513",
"1003803495"
],
"countByType" : {
"doctors" : 2,
"laboratories" : 3,
"hospitals" : 1,
"imagingCenters" : 0
}
}
我基本上是在尝试向基类模型中的数组添加一个新项目。创建新用户时,会为“提供者”添加一个空数组。提供者没有模型。它只是一个可以保存提供者列表的数组。
如果 providerId 不存在,如何将新的 providerId 添加到提供者列表中(将字符串添加到列表中)?
这是我的提供者模型
{
"name": "UserProviders",
"base": "Model",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"userId": {
"type": "objectId",
"required": true,
"index": {
"unique": true
}
},
"providers": {
"type": [
"any"
],
"default": []
},
"countByType": {
"type": "object",
"default": {
"doctors": 0,
"labs": 0,
"hospitals": 0,
"imagingCenters": 0
}
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
任何帮助将非常感激。
解决方案
我会做两件事:首先,我会添加一个自定义模型方法来添加一个新的提供者(它接受一个字符串或字符串数组),例如:
const provider = async Provider.findOne({id: someId});
provider.addProviders([value1, value2]);
await provider.save();
然后,为了确保它不会保存垃圾值,我将添加一个自定义验证器,在保存实例之前检查数组中的重复项并引发错误或删除重复项。您可以在此处阅读如何向模型添加自定义验证功能。
推荐阅读
- python - Matplotlib 表中的双标题
- google-bigquery - BigQuery:将摄取时间戳添加到通过流插入摄取的记录中
- c++ - 窗口调整大小时Qgraphicview调整大小
- ocaml - OCaml Opam 开关
- arrays - SQL Server 中的 STRING_SPLIT 参数无效
- python - 使用多重合并删除一列 - Python
- .net - 用于移动和桌面之间的平面文件数据库
- javascript - 尝试将图像发布到 Cloudinary 时,我不断收到错误请求错误
- php - Drupal 多站点设置与 NIGNX 中的子目录
- javascript - JavaScript 数组推送检查重叠警报