我正在使用NodeJS + Express + MondoDB开发我的第一个应用程序,但我遇到了一些问题。
起初我有两个模型:
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);
基本上,每个用户都有一份工作清单。因此,每次运行作业时,我都会搜索用户并将此作业添加到他的列表中。为简单起见,我创建了一个名为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
提前致谢。
答案 0 :(得分:2)
您似乎没有export
您的模特。
在这里,您只需在变量中分配模型。
var Job = mongoose.model('Job', job_schema);
尝试导出所有模型
module.exports= mongoose.model('Job', job_schema);
module.exports= mongoose.model('User', user_schema);