2017-04-19 32 views
0

這裏我使用fork方法在節點js中進行一些計算。我跟着link的答案。它按預期工作,並開始計算。如何從mongo數據庫獲取詳細信息併發送或存儲在nodejs中的對象分叉方法

這裏我怎樣才能從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); 
    }); 

childpage

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控制檯

EDIT 顯示我已經改變了process.send線process.on方法然後它在控制檯接收但作爲object.Even我試圖與JSON.stringify(docs);也但同樣的結果。

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

控制檯

received: [object object] 

貓鼬模式

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

}, { versionKey: false }); 
+0

你收到來自任何用戶數據庫在子進程端? –

+0

@JohannesMerz不,我沒有收到,但該查詢時,我正常使用它正在使用 –

+0

然後它明確與你的貓鼬設置,你是否正確地連接到你的數據庫在子進程? –

回答

0

這段代碼完全適用於我。請試試這個:

在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);    
}); 

對於我這樣的結果:

enter image description here

+0

感謝您的回答。我嘗試過,但我只接收'收到:'在child.js內部查詢process.send和控制檯不顯示。 –

+0

@charantej看來你在'child_process'中沒有任何問題。你能爲你的貓鼬模型和連接提供代碼嗎? – Tolsee

+0

您的數據庫是否有任何文檔?根據你在這裏顯示的內容,我可以保證你的代碼沒有問題。可能是其他隱藏的問題。因爲代碼完全在我的機器上運行。並且還提到你的節點版本。 – Tolsee

相關問題