Node.js Mongoose报告编写成功,数据库中没有任何内容
当我通过控制台与Mongo交互时,mongoose成功回调正在运行,但数据库中没有显示任何内容 有人能帮助解释为什么数据库中没有显示任何内容吗 app.jsNode.js Mongoose报告编写成功,数据库中没有任何内容,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,当我通过控制台与Mongo交互时,mongoose成功回调正在运行,但数据库中没有显示任何内容 有人能帮助解释为什么数据库中没有显示任何内容吗 app.js var express = require('express') , routes = require('./routes') , user = require('./routes/user') , http = require('http') , path = require('path') , mongoose =
var express = require('express')
, routes = require('./routes')
, user = require('./routes/user')
, http = require('http')
, path = require('path')
, mongoose = require('mongoose');
var app = express();
var TimesheetsController = require(__dirname + '/controllers/timesheets');
var UsersController = require(__dirname + '/controllers/users');
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', routes.index);
app.get('/timesheets', TimesheetsController.list);
app.post('/timesheets', TimesheetsController.add);
app.get('/users', UsersController.list)
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
timesheet.js控制器
var TimesheetsModel = require('../models/timesheets');
var TimesheetsController = {
list : function(req, res){
TimesheetsModel.listTimesheetsByUser(function(){res.render('timesheets/index', { title: 'Timesheets',timesheets: {} });});
},
add : function(req, res){
TimesheetsModel.newTimesheet(10, req.body, function(err){
if(err){
res.json({'message':'failed.'})
}else{
res.json({'message':'success!'})
};
});
}
}
module.exports = TimesheetsController;
timesheet.js模型
var mongoose = require('mongoose')
, Schema = mongoose.Schema
, ObjectId = Schema.ObjectId;
var db = mongoose.createConnection('localhost', 'timetracker');
var TimesheetSchema = mongoose.Schema({
'date': Date,
'lines': [ {any: Schema.Types.Mixed} ],
'user_id': ObjectId
});
var Timesheet = db.model('Timesheet', TimesheetSchema)
// Timesheet.virtual('id')
// .get(function() {
// return this._id.toHexString();
// });
// Timesheet.pre('save', function(next) {
// this.keywords = extractKeywords(this.data);
// next();
// });
mongoose.model('Timesheet', Timesheet);
TimesheetsModel = {
listTimesheetsByUser : function(callback){
console.log('listing timesheets');
callback();
},
newTimesheet : function(user,data,callback){
var date = data.date;
var lines = data.lines;
var u = user;
console.log(lines);
var ts = new Timesheet({ "date": Date.now(),"lines":lines, "user_id":u });
ts.save(function (err) {
if (err) callback(err);
console.log('adding new timesheet'); //this is output
callback();
});
}
};
module.exports = TimesheetsModel
有两个问题-我从您的代码中猜到您遇到了错误。您需要解决两个问题: a) 使用回调返回:
if (err) return callback(err);
console.log('adding new timesheet'); //this is output
callback();
b) 我怀疑该错误与您将“10”作为用户ID传递有关。您的架构设置为需要ObjectId(24个字符),因此将失败。有几个问题-我从您的代码中猜测您将遇到错误。您需要解决两个问题: a) 使用回调返回:
if (err) return callback(err);
console.log('adding new timesheet'); //this is output
callback();
b) 我怀疑此错误与您将“10”作为用户ID传递有关。您的架构设置为需要ObjectId(24个字符),因此将失败。插入数据库的代码在哪里?您在mongo控制台中检查的集合名称是什么?我正在保存到时间表模型底部附近的数据库中
ts.save(函数(err){if(err)callback(err);console.log('adding new timesheet');//这是输出callback();})代码>我已签入控制台中的所有集合。我想它可能写了一些有趣的地方,所以我放弃了所有的dbs。在mongod的控制台中,我没有看到写入db的记录,但仍会调用成功回调。仅供参考,无论是否存在错误,您正在“添加新时间表”的输出将始终显示,因为您在错误回调后没有从函数返回。您是否总是看到JSON{“message”:“success!”}
?插入数据库的代码在哪里?您在mongo控制台中检查的集合名称是什么?我正在保存到时间表模型底部附近的数据库中ts.save(函数(err){if(err)callback(err);console.log('adding new timesheet');//这是输出callback();})代码>我已签入控制台中的所有集合。我想它可能写了一些有趣的地方,所以我放弃了所有的dbs。在mongod的控制台中,我没有看到写入db的记录,但仍会调用成功回调。仅供参考,无论是否存在错误,您正在“添加新时间表”的输出将始终显示,因为您在错误回调后没有从函数返回。您是否总是看到JSON{“消息”:“success!”}
?