我正在尝试学习node和mongo,以便构建一个简单的web应用程序/自学更多关于web应用程序的知识。但是,当我调用Model.save()时,延续函数似乎从未执行过,数据也没有保存。
这是我到目前为止所知道的:
/* app.js */
var express = require('express')
, app = express()
, routes = require('./routes')
, http = require('http')
, path = require('path')
, mongoose = require('mongoose')
, db
, Track
, models = require('./models.js');
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser('secretstuff'));
app.use(express.session());
app.use(app.router);
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});
});
models.defineModels(mongoose, function(){
app.Track = Track = mongoose.model('Track');
db = mongoose.createConnection('localhost','nextrak')
});
app.get('/', routes.index);
app.get('/dbTest', function(req, res){
console.log("Here goes...");
var t = new Track({
name: "TestTrack",
artist: "Artist",
tags: ["test"],
next: ["track1","track2"]
});
console.log("Test Track:");
console.log(t);
t.save(function(){
if(err)
console.log("Error! Couldn't complete dbTest successfully.");
else
console.log("Aw yiss, got dbTest working");
})
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
/*models.js*/
function defineModels(mongoose, cont){
var Schema = mongoose.Schema;
Track = new Schema({
'name': { type: String, index: true },
'artist': String,
'tags': [String],
'next': [String],
});
mongoose.model('Track', Track);
cont();
}
exports.defineModels = defineModels;没有抛出错误,mongo日志表明,当我启动我的应用程序时,5个新的连接被启动。不会出现新的日志( clientcursormon日志除外)。当我在Chrome中加载/dbTest时,应用程序会打印出以下内容:
开始了..。
Test Track:
{ name: 'TestTrack',
artist: 'Basik',
_id: 5031606aa11cf95815000001,
next: [ 'track1', 'track2' ],
tags: [ 'test' ] }Mongo似乎配置正确。当我让node运行Mongoose带你完成的简单的“入门”脚本时,一切都正常工作。
谁能指出我做错了什么?
发布于 2012-08-20 07:07:41
您尚未为Mongoose创建默认使用的连接。替换为:
db = mongoose.createConnection('localhost','nextrak')有了这个:
db = mongoose.connect('localhost', 'nextrak');几个其他的nit:
Track设置为models.jst.save回调中添加一个err参数。发布于 2012-08-20 06:40:53
首先,如果只需要一个连接,就应该使用mongoose.connect()。
其次,我认为您混淆了跟踪模式和跟踪模型。这是两件不同的事情。new Schema()创建一个Schema对象,该对象被传递给mongoose.model()。在创建要存储在数据库中的新实例而不是模式时,mongoose.model的结果(似乎您正在丢弃它)是您想要使用的结果。
https://stackoverflow.com/questions/12030371
复制相似问题