【问题标题】:I am finding difficulty saving the data separately in one collection我发现很难将数据单独保存在一个集合中
【发布时间】:2018-12-21 03:37:57
【问题描述】:

我有 3 个不同的页面,内容是从一个集合中加载的。内容包含 ID、版本和路径。路径是一个对象数组,其中一个属性“service”将分隔页面的内容,例如,如果“service”:“page1”这个对象将被推送到一个数组,这将加载 page1 数据等等. ID 和版本保持不变。

这里是代码

"_id" : "admin",
    "version" : "1.0",
    "path" : [ 
        {
            "type" : "ABC",
            "number" : "1234",
            "position" : "ABC",
            "service" : "page1"
        }, 
        {
            "type" : "ABC",
            "number" : "2233",
            "position" : "ABC",
            "service" : "page3"
        }, 
        {
            "type" : "ABC",
            "number" : "12345",
            "position" : "ABC",
            "service" : "page2"
        }, 
        {
            "type" : "ABC",
            "number" : "2345",
            "position" : "ABC",
            "service" : "page3",
        }
    ]
} 

我可以加载数据,但我在保存日期时遇到了问题,如果我选择在 page1 中保存,则 page2 和 page3 的内容将被删除,只有 page1 数据可用,如果我选择在 page2 中保存第 1 页和第 3 页的内容将被删除。我需要根据“服务”的值保存数据 //保存数据

this.http.patch(URL + 'document/' + c, { "$set": { path: temp.path } }, this.hdr).toPromise().then(res => {...})

我正在研究 Angular 6,数据库是 MongoDB 请帮助我解决这个保存问题。

【问题讨论】:

    标签: angular mongodb


    【解决方案1】:

    如果我理解正确,您将检索与您的一个页面的查询匹配的路径元素,这些元素放置在一个数组中。 (我从您记录不充分的问题中假设是“temp.path”)。

    然后您继续将路径更新为该数组,该数组现在不再包含其他页面的对象。

    解决方案: 你需要 {$set: {'path': fullPath}} 假设

    // the entire path array as present in your collection
        fullPath =[{service: "page1", ... }, {service: "page1", ...}, {service: "page2"}...] 
        temp.path = fullPath.filter(p=>p.service==="page1");
    

    这应该可行,因为变量是通过引用传递的,并且数组 temp.path 引用了 fullPath 的对象。这意味着您对 temp.path 所做的修改将反映在 fullPath 中

    编辑:这似乎足够轻巧,您可以获取到客户端的整个路径,并在更改时推拉整个路径。 如果不是,它会变得更复杂,并且您需要对每个更改的成员进行单独的更新操作,并使用 $expr 运算符来匹配您尝试修改的路径的数组元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多