2016-10-13 3 views
0

私はNodeJS + Express + MondoDBで最初のアプリケーションを開発していますが、いくつか問題があります。基本的には、各ユーザーがジョブのリストを持っているNodeJSでポピュレートモデルを保存する

user.jsの

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

var user_schema = new Schema({ 
_id     : Number, 
userName   : String, 
jobList    : [{ type: Schema.Types.ObjectId, ref: 'Job' }] 
}); 

var User = mongoose.model('User', user_schema); 

job.js

var mongoose = require('mongoose'), 
Schema = mongoose.Schema; 

var job_schema = new Schema({ 
user    : { type: Number, ref: 'User' }, 
jobName   : String, 
outputFile  : String, 
status   : String 
}); 

var Job = mongoose.model('Job', job_schema); 

は、まず私は2つのモデルがあります。だから私は仕事をするたびに、私はユーザーを検索し、彼のリストにこの仕事を追加します。 simplycityのために私はjobs.jsいわゆる「コントローラ」を作成しました:

var User = require('../models/user.js'); 
var Job = require('../models/job.js'); 

exports.addJob = function(req, res) { 

    var user = new User({ 
     _id    : 0, 
     userName   : 'guest' 
    }); 

    user.save(function (err) { 
     if (err) return handleError(err); 
    }); 

    var job1 = new Job ({ 
     username   : user._id, 
     jobName   : 'jobname', 
     outputFile  : 'myfile', 
     status   : 'finished' 
    }); 

    job1.save(function(err, job) { 
     if(err) return res.status(500).send(err.message); 
     res.send(JSON.stringify(job)); 
    }); 

} 

は最後に、私の「server.js」

var express = require('express'); 
var app  = express(); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 

var jobsCtrl = require('./controllers/jobs'); 

app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

var port = process.env.PORT || 8081; 

var jobs = express.Router(); 
jobs.route('/addJob') 
    .post(jobsCtrl.addJob); 

app.use(jobs); 

mongoose.connect('mongodb://localhost/morca', function(err, res) { 
    if(err) { 
     console.log('ERROR: connecting to Database. ' + err); 
    } else { 
     console.log('Connected to Database'); 
    } 
}); 

app.listen(port); 
console.log('Server listening at: ' + port); 

まあ、私はエラー「オブジェクトを取得していますが関数ではありません'メソッドのexports.addJobで/ addJobにPOSTを送信すると、私は '人口モデルを格納する'を探していますが、それは正しいようです:http://mongoosejs.com/docs/populate.html

ありがとうございます。

答えて

2

あなたのモデルはexportではありませんでした。

ここでは、モデルを変数に割り当てるだけです。

var Job = mongoose.model('Job', job_schema); 

はい、あなたは正しいです。この

module.exports= mongoose.model('Job', job_schema); 
module.exports= mongoose.model('User', user_schema); 
+0

のように、すべてのモデルをエクスポートしてください。今それは働いている。ありがとう! – Sergiodiaz53

関連する問題