シンプルな Web アプリを構築するため、または Web アプリケーションについてもう少し独学するために、ノードと mongo を学習しようとしています。ただし、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 は正しく構成されているようです。Mongoose が説明する単純な「Getting Started」スクリプトをノードで実行すると、すべてが正しく機能します。
誰かが私が間違っていることを指摘できますか?