Sal*_*lem 9 javascript mongoose mongodb node.js express
我正在尝试学习node和mongo,以便构建一个简单的Web应用程序/自学一些关于Web应用程序的内容.但是,当我调用Model.save()时,似乎永远不会执行continuation函数,并且不会保存数据.
这是我到目前为止所拥有的:
/* 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;
Run Code Online (Sandbox Code Playgroud)
不会抛出任何错误,并且mongo日志表明我启动应用程序时会启动5个新连接.不显示新日志([clientcursormon]日志除外).当我在Chrome中加载/ dbTest时,应用程序打印出以下内容:
开始...
Test Track:
{ name: 'TestTrack',
artist: 'Basik',
_id: 5031606aa11cf95815000001,
next: [ 'track1', 'track2' ],
tags: [ 'test' ] }
Run Code Online (Sandbox Code Playgroud)
Mongo似乎配置正确.当我有节点运行Mongoose引导您完成的简单"入门"脚本时,一切正常.
谁能指出我做错了什么?
Joh*_*yHK 15
您尚未为Mongoose创建默认使用的连接.替换这个:
db = mongoose.createConnection('localhost','nextrak')
Run Code Online (Sandbox Code Playgroud)
有了这个:
db = mongoose.connect('localhost', 'nextrak');
Run Code Online (Sandbox Code Playgroud)
结合其他尼特:
Track在models.js中设置为全局变量err在t.save回调中添加一个参数.| 归档时间: |
|
| 查看次数: |
5142 次 |
| 最近记录: |