Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用NodeJS保存并填充模型_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

Javascript 使用NodeJS保存并填充模型

Javascript 使用NodeJS保存并填充模型,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,我正在用NodeJS+Express+MondoDB开发我的第一个应用程序,我遇到了一些问题 首先,我有两个模型: user.js var mongoose = require('mongoose'), Schema = mongoose.Schema; var user_schema = new Schema({ _id : Number, userName : String, jobList : [{ typ

我正在用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发送帖子时,我得到一个错误“Object不是函数”。我一直在寻找“存储填充模型”,但它似乎是正确的:


提前谢谢。

您似乎没有导出您的型号

在这里,您只是在变量中分配模型

var Job = mongoose.model('Job', job_schema);
尝试像这样导出所有模型

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

您似乎没有导出您的模型

在这里,您只是在变量中分配模型

var Job = mongoose.model('Job', job_schema);
尝试像这样导出所有模型

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