如何从 mongo db 获取详细信息并在 nodejs Fork 方法中发送或存储在对象中

Posted

技术标签:

【中文标题】如何从 mongo db 获取详细信息并在 nodejs Fork 方法中发送或存储在对象中【英文标题】:How to fetch the details from mongo db and send or store in object in nodejs Fork method 【发布时间】:2017-09-15 08:34:44 【问题描述】:

这里我使用fork方法在node js中做一些计算。我在link 中得到了答案。它按预期工作并开始计算。

如何从子文件中的 mongodb 获取详细信息。我正在使用 mongoose 进行 mongodb。我的示例代码如下

ma​​in.js

    var childprocess = require('child_process');
    var child = childprocess .fork(__dirname + '/childpage');
    child.on('message', function(m) 
   // Receive results from child process
    console.log('received: ' + m);
   );

子页面

   var User = require('../models/User');   //mongoose schema
   var users= ;
   User.find(, function (err, docs) 
    debugger;
   users = docs;          
   //process.send(users );               //Changed as in edit
    );

在这里,我在控制台中没有得到任何结果。任何人都可以帮助我从 mongoDB 获取子页面中的详细信息并将其存储在一个对象中。将这些发送到 mainjs 以在控制台中显示

编辑 我已将 process.send 行更改为 process.on 方法,然后它在控制台中接收但作为一个对象。即使我尝试使用 JSON.stringify(docs); 也但结果相同。

 process.on('message', function(m) 
      process.send(users);
     );

IN 控制台

received: [object object]

Mongoose 架构

const mongoose = require('mongoose');
const userSchema = new mongoose.Schema(
    FirstName: String,
    LastName: String,
    Email:  type: String, unique: true    

,  versionKey: false );

【问题讨论】:

您是否从子进程端的 db 接收到任何用户? @JohannesMerz 不,我没有收到,但是当我在正常过程中使用该查询时它正在工作 那么你的猫鼬设置很明显,你在子进程中正确连接到你的数据库吗? @JohannesMerz 连接正常。现在我正在接受但在对象中。请查看已编辑的问题。 请尝试console.log("Recieved", m)记录结果。 【参考方案1】:

这段代码 sn-p 非常适合我。请试试这个:

在 main.js 中

var childprocess = require('child_process');
var child = childprocess.fork(__dirname + '/child');
child.on('message', function(m) 
    // Receive results from child process
    console.log('received: ',  m);
);

在 child.js 中

var User = require('../models/User'); 
var users= ;
User.find(, function (err, docs) 
    // Please add log in this line to check whether their is anything in database
    console.log(docs);
    debugger;
    users = docs;          
    process.send(users);              
);

对我来说这个结果:

【讨论】:

感谢您的回答。我试过了,但我只收到 received: 在 child.js 里面的查询 process.send 和控制台没有显示。 @charantej 看来您在child_process 中没有任何问题。你能为你的猫鼬模型和连接提供代码吗? 你的数据库有文档吗?我可以向您保证,根据您在此处显示的内容,您的代码没有问题。可能是其他隐藏的问题。因为代码在我的机器上完美运行。并提及您的节点版本。 有文件。我观察到的是,每当我在 mongoose 查询中编写 process.send 时,它都不会向 main.js 发送任何内容,因为即使 received 也没有显示在控制台中,如果我在外面写,它会显示我初始化为 你可以更新总文件,比如猫鼬连接,以及这个示例项目中所有剩余的代码或文件,因为要检查我的项目。

以上是关于如何从 mongo db 获取详细信息并在 nodejs Fork 方法中发送或存储在对象中的主要内容,如果未能解决你的问题,请参考以下文章

Spring Mongo DB @DBREF

Java Mongo模板中同一数据库中的Mongo DB日期差异和查询条件

你如何从 Mongo 日期字段中获取 DayHours?

你如何从 Mongo 日期字段中获取 DayHours?

将本地 mongo db 迁移到 atlas 后无法从 atlas 获取记录

如何在Mongo DB中使用arrayElemAt获取当前文档值