如何从 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。我的示例代码如下
main.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 方法中发送或存储在对象中的主要内容,如果未能解决你的问题,请参考以下文章
Java Mongo模板中同一数据库中的Mongo DB日期差异和查询条件