编辑[求助]:
我正在连接错误的数据库...
我改变了
var dbURI = 'mongodb://localhost/wifiplz'
到
var dbURI = 'mongodb://localhost/wifiPlz'
所以这一切都是由于一个错字(非资本化的p)。遇到此类问题的任何人都要确保您连接到正确的数据库!
这是我的架构文件(location.js
):
var mongoose = require('mongoose');
var openingTimeSchema = new mongoose.Schema({
days: {type: String, required: true},
opening: String,
closing: String,
closed: {type: Boolean, required: true}
});
var reviewSchema = new mongoose.Schema({
author: String,
rating: {type: Number, min: 0, max: 5, required: true},
createdOn: {type: Date, default: Date.now},
reviewText: String
});
var locationSchema = new mongoose.Schema({
name: {type: String, required: true},
address: {type: String, required: true},
rating: {type: Number, default: 0, min: 0, max: 5},
facilities: [String],
coords: {type: [Number], index: '2dsphere'},
openingTimes: [openingTimeSchema],
reviews: [reviewSchema]
});
// compiling schema as 'Location' model
mongoose.model('Location', locationSchema);
在我的路线中,我将路线映射到适当的控制器:
router.get('/locations/:locationId', locationsCtrl.locationRead);
在我的控制器(locationsCtrl.js
)中,我尝试按ID找到位置:
var mongoose = require('mongoose');
var Location = mongoose.model('Location');
module.exports.locationRead = function(req, res) {
Location
.findById(req.params.locationId)
.exec(function(err, location) {
if (err) throw err;
res.status(200);
res.json(location); // returns null
});
}
当我对此进行测试时,我总是获得有效ID的null
。希望了解一些有关原因的见解。感谢。
编辑:
使用mongo
和show collections
在我的计算机上检查集合的名称,我得到locations
作为集合名称。这是预期的。虽然指定mongoose.model('Location', locationSchema, 'locations')
没有任何效果。
答案 0 :(得分:0)
亲爱的,
进行以下更改:
var mongoose = require('mongoose');
var Location = mongoose.model('Location');
module.exports.locationRead = function(req, res) {
Location
.findOne({_id: req.params.locationId}, function (err, location){
if (err) throw err;
res.status(200);
res.json(location); // returns null
});
}
_id可能是您的任何字段,因此请使用_id替换您的数据库字段,但请确保该字段本质上应为主要字段或唯一字段。如果它没有在该字段上创建索引
谢谢&干杯强>