我无法在 req mongoDB 的 json 中引入新元素 con JS (nodeJS)

Posted

技术标签:

【中文标题】我无法在 req mongoDB 的 json 中引入新元素 con JS (nodeJS)【英文标题】:I can't introduce new elements con JS (nodeJS) in json from req mongoDB's 【发布时间】:2021-09-07 23:35:01 【问题描述】:

请原谅我这几天一直在尝试解决这个问题,但我找不到问题所在。

我正在从 mongoDB^14..(with mongoose) 下载两个具有互补数据的数组。一个包含用户数据,另一个包含用户调查记录。 两个数组都通过用户的邮箱关联:

/***************************************************************
 This is what I download from mongoDB with Nodejs 
****************************************************************

const user = require ('../models/user');
const test = require ('../models/test'); 

 let users = await user.find (email:userEmail);
 let tests = await test.find (email:testEmail);

Request:

let users: [                                    
name:'pp', email:'pp@gmail.com,
 name:'aa', email:'aa@gmail.com'
];

let tests: [
email:'pp@gmail.com', satisfaction:'5', 
email:'aa@gmail.com', satisfaction:'2'];


*****************************************************************************/

现在我尝试使用以下方法关联两个 json 数组:

      for (let i = 0; i < prof1.length; i++) 
            for (let z = 0; z < registro1.length; z++) 

                       if (users[i].email==tests[z].email)
                              users[i]['satisfation'] = test[z].satisfation;
                                           
                
            

如果我执行 console.log(users[0]),我的愿望是:

name:'pp', email:'pp@gmail.com', satisfation:'5'

但我收到:

name:'pp', email:'pp@gmail.com'

但是注意¡¡¡¡如果我做了一个console.log(users[0].satisfation)

结果是:5

??????请有人可以帮助我。非常感谢

注意: 如果我不下载 mongodb 数组,而是手动编写它们。所以它完美地工作。可以锁定模型吗?

广泛的信息 尽管我给出了一个简单的示例,但用户和测试数组在我的应用程序中要复杂得多,但是它们在 mongoDB 中进行了建模和正确管理。 在 mongoDB 中有两个文档的原因是因为每个文档中有超过 20 个变量。在用户中,我保存固定的用户数据,并在测试中保存我随时间收集的数据。稍后,我将两个数组都降低到执行统计计算的服务器上,为此我需要生成一个包含来自两个数组的数据的数组。我只是获取测试数据并将其添加给用户以关联所有参数。我认为这样可以减轻mongoDB的负担,进行连续查询和后续注册,因为我在服务器上执行操作,最终更新mongoDB中的arry测试。 当我查询数据库时,我收到以下文档数组:

let registroG = await datosProf.find(idAdmin:userAdmin );
res.json(registroG);

这是前端客户端收到的响应:

如果我打开对象,文档 [0] 将是:

**问题**: 为什么当我尝试在对象中包含值键时它不包含它?

【参考方案1】:

您可以使用 Array.map 和 es6 扩展运算符来匹配对象

let users = [ name: 'pp', email: 'pp@gmail.com' ,  name: 'aa', email: 'aa@gmail.com' ];
let tests = [ email: 'pp@gmail.com', satisfaction: '5' ,  email: 'aa@gmail.com', satisfaction: '2' ];

let result = users.map(v => (
  ...v,
  ...tests.find(e => e.email == v.email)
))
console.log(result)

【讨论】:

非常感谢 Nur,这项工作还可以,但正如我所评论的,如果您手动编写它,它就可以工作。使用您的代码,在控制台中我有这个: '$__': InternalCache strictMode: true, selected: ,shardval: undefined, saveError: undefined, validationError: undefined,saving: undefined, adhocPaths: undefined,removing: undefined, inserting :未定义,保存:未定义,版本:未定义,getters:,_id:60d3486f9f9dfd4c457c0e4c,填充:未定义,......_doc:名称:'pp',电子邮件:'pp @gmail.com', 满意度: 5,__v: 0 , '$init': true ,

以上是关于我无法在 req mongoDB 的 json 中引入新元素 con JS (nodeJS)的主要内容,如果未能解决你的问题,请参考以下文章

无法从 mongoDB 中删除数据

迭代mongoDB集合,为每个项执行聚合的异步任务,并且当它们全部完成时返回响应中的JSON

无法读取 pyspark 中的 mongodb 数据(json)

卡在 NodeJS mongoDB find() 查询上

如何从restapi中删除mongodb集合[重复]

如何生成唯一的哈希并将其保存在我的 MongoDB 文档中,而不必通过 req.body 发送?