所以我有这个架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TreeSchema = new Schema({
}, { collection: 'treeLocations' });
var TreeDetailsSchema = new Schema({
}, { collection: 'treeInfo' });
module.exports = mongoose.model('Tree', TreeSchema);
module.exports = mongoose.model('TreeDetail', TreeDetailsSchema, "treeInfo");
我正在用ID这样打电话:
var TreeDetails = require('./app/models/tree').model('TreeDetail');
router.route('/api/trees/:tree_id')
.get(function(req, res) {
TreeDetails.findById(req.params.tree_id, function(err, treedetail) {
if (err)
res.send(err);
res.json(treedetail);
});
});
出于某种原因 - http://localhost:3000/api/trees/5498517ab68ca1ede0612d0a
这是一棵真树,正在返回null
可以帮助你帮助我的东西:
答案 0 :(得分:0)
我没有看到的步骤是您实际连接到MongoDB的方式,之后,您如何从连接中获取模型。
// connect to MongoDB
var db = mongoose.createConnection('mongodb://user:pass@host:port/database');
// now obtain the model through db, which is the MongoDB connection
TreeDetails = db.model('TreeDetails');
最后一步是如何将模型与连接的mongo数据库关联。
的更多信息有几种方法可以使用mongoose建立与MongoDB的连接,本教程使用:
mongoose.connect('mongodb://node:node@novus.modulusmongo.net:27017/Iganiq8o');
(我个人更喜欢更明确的mongoose.createConnection
,如示例所示)
(我在本例中使用了mongoose 4.3.1 )
我重现的步骤,以提供一个工作示例(不为其创建Web服务):
var mongoose = require('mongoose'),
TreeDetails, db;
// create the model schema
mongoose.model('TreeDetails', mongoose.Schema({
// .. your field definitions
}, {collection: 'treeInfo'}));
db = mongoose.createConnection('mongodb://user:pass@host/example');
TreeDetails = db.model('TreeDetails');
TreeDetails.findById('5671ac9217fb1730bb69e8bd', function(error, document) {
if (error) {
throw new Error(error);
}
console.log(document);
});
答案 1 :(得分:0)
而不是:
var TreeDetails = require('./app/models/tree').model('TreeDetail');
尝试:
var mongoose = require('mongoose'),
TreeDetails = mongoose.model('TreeDetail');
定义集合名称不应该给您带来任何问题。这就是在使用mongo shell时将在数据库中调用集合的内容。
为了确定,请在调用findById之前尝试记录 req.params.tree_id ,以确保它在您怀疑时通过。