我无法在 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集合,为每个项执行聚合的异步任务,并且当它们全部完成时返回响应中的JSON