【发布时间】:2013-12-12 21:47:04
【问题描述】:
我正在尝试使用 mongodb(带有 mogoose)和带有 restify 的 node.js 构建类似 rest 的 API。 我是 mongo 世界的绝对新手,我不确定问题出在哪里。这是数据库连接的问题,还是其他问题?
所以,我是这样做的: rest-server.js
//start server
var restify = require('restify');
var server = restify.createServer();
server.use(restify.bodyParser());
//connect db
var config = require('./Config.js');
var mongoose = require('mongoose'),
db = mongoose.createConnection('localhost', 'travelers'),
Schema = mongoose.Schema,
ObjectId = mongoose.SchemaTypes.ObjectId;
db.on('error', console.error.bind(console, 'DB connection error:'));
db.once('open', function callback() {
console.log('db connection open');
});
var LoginModel = require('./models/LoginModel.js').make(Schema, mongoose);
var LoginResource = require('./resource/LoginResource.js')(server, LoginModel);
LoginModel.js
function make(Schema, mongoose) {
var LoginSchema = new Schema({
//id: (?)
username: String,
password: String,
traveler_id: Number,
contact_id: Number,
last_login: Date,
token: String
});
return mongoose.model('Login', LoginSchema);
}
module.exports.make = make;
LoginResource.js
exports = module.exports = function (server, LoginModel) {
var LoginRepository = require('../repository/LoginRepository.js');
server.get('/login/:username/:password', function (req, res, next) {
LoginRepository.getLogin(req, res, next, LoginModel);
});
}
LoginRepository.js
function getLogin(req, res, next, LoginModel) {
var query = LoginModel.find({ username: req.params.username, password: req.params.password});
query.exec(function (err, docs) {
console.log('got it!');
res.send(docs);
});
}
测试查询 curl localhost:8080/login/qqq/www
所以我从来没有联系过res.send(docs);
实际上,我没有向数据库添加任何内容。我只想知道查询没有找到任何东西。
更新: 我不明白为什么,但是如果我像这样更改数据库连接代码可以解决这个问题:
//connect db
var config = require('./Config.js');
var mongoose = require('mongoose/');
db = mongoose.connect(config.creds.mongoose_auth),
Schema = mongoose.Schema;
(使用 mongoose.connect 并将 db 和 Schema 变量定义为全局变量)
但在这种情况下 db.on() 和 db.once() 会抛出异常“没有这样的方法”。
换句话说 - 问题嗯...解决了,但我仍然不知道为什么。 这看起来像是一个有用的链接:server.js example on github
【问题讨论】:
-
我也像这样启动 mongo:mongod -dbPath ../data/db
标签: javascript node.js mongodb mongoose