这是我的控制器文件位置。js
var mongoose = require('mongoose');
var Loc = mongoose.model('location');
module.exports.locationsListByDistance = function(req, res) {
var lng = parseFloat(req.query.lng);
var lat = parseFloat(req.query.lat);
var point = {
type: "Point",
coordinates: [lng, lat]
};
var geoOptions = {
spherical: true,
maxDistance: 1000
};
Loc.geoNear(point, geoOptions, function (err, results, stats) {
console.log(results);
});
};
我的模型文件位置。js
var mongoose = require('mongoose');
var reviewSchema = new mongoose.Schema({
author: String,
rating: {
type: Number,
required: true,
min: 0,
max: 5
},
reviewText: String,
createdOn: {
type: Date,
"default": Date.now
}
});
var openingTimeSchema = new mongoose.Schema({
days: {
type: String,
required: true
},
opening: String,
closing: String,
closed: {
type: Boolean,
required: true
}
});
var locationSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
address: String,
rating: {
type: Number,
"default": 0,
min: 0,
max: 5
},
facilities: [String],
// Always store coordinates longitude, latitude order.
coords: {
type: [Number],
index: '2dsphere'
},
openingTimes: [openingTimeSchema],
reviews: [reviewSchema]
});
mongoose.model('location', locationSchema, 'locations');
每当我跑的时候http://localhost:3000/api/locations?lng=-0.9690884
TypeError: Loc.geo在Layer.handle[作为handle_request](/home/shacker/Projects/loc8r/app_api/控制器/locations.js:51: 7)时没有module.exports.locations的函数lib/router/layer.js:95: 5)at Next(/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/route.js:137: 13)at Route.dispatch(/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/route.js:112: 3)在Layer.handle[作为handle_request](/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/layer.js:95: 5) /home/shackers/Projects/mean/loc8r/node_modules/express/lib/router/index.js:281: 22在Function.process_params(/home/shackers/Projects/mean/loc8r/node_modules/express/lib/router/index.js:335: 12)在下一个(/home/shacker/Projects/均值/loc8r/node_modules/Express/lib/路由器/index.js:275: 10)在Function.handle(/home/shacker/Projects/均值/loc8r/node_modules/Express/lib/路由器/index.js:174: 3)在路由器(/home/shacker/Projects/均值/loc8r/node_modules/Express/lib/router/index.js:47: 12)在Layer.handle[handle_request](/home/shacker/Projects/均值/loc8r/node_modules/Express/lib/router/layer.js:95: 5)在trim_prefix(/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/index.js:317: 13) /home/shackers/Projects/mean/loc8r/node_modules/express/lib/router/index.js: 284:7在函数。process_params(/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/index. js: 335:12)在下一个(/home/shacker/Projects/平均值/loc8r/node_modules/Express/lib/router/index. js: 275:10)在 /home/shackers/Projects/mean/loc8r/node_modules/express/lib/router/index.js: 635:15
这是我正在使用的依赖项的版本:
我有完全相同的问题,我已经放弃了我以前使用的方法(看起来你也有)。以下是一个不会抛出错误的替代方案,应该会给您使用Loc.geo附近后的相同结果:
Loc.aggregate(
[
{
'$geoNear': {
'near': point,
'spherical': true,
'distanceField': 'dist',
'maxDistance': 1000
}
}
],
function(err, results) {
// do what you want with the results here
}
)
发生此错误的原因是以前支持. Geo近东
,但从使用Node MongoDB v3驱动程序的Mongoose 5开始不再支持。
该问题记录在迁移到Mongoose 5文档中,该文档又链接到MongoDB 3驱动器发行说明,该说明提供了关于推荐更换的以下声明:
geoNear命令的功能在语言中的其他地方重复,在未分块集合上的$near/$nearSphere查询运算符中重复,在所有集合上的$geoNear聚合阶段中重复。
实际上,官方文件认可了其他答案中记录的$geoNear
的使用。
router.get('/', () => {
Loc.aggregate([
{
$geoNear: {
near: 'Point',
distanceField: "dist.calculated",
maxDistance: 100000,
spherical: true
}
}
]).then(function(err, results, next){
res.send();
}).catch(next);
});
参考:-https://docs.mongodb.com/manual/reference/command/geoNear/
我有一个迷你赌场游戏和猫鼬模型定义如下: 在本地运行我的应用程序时,我没有遇到任何错误。但是,在ubuntu生产环境中运行时,我得到以下错误: 堆栈跟踪显示错误来自db_utils.js,如下所示: 我检查了我的module.exports的定义是否正确,它是正确的。不确定为什么会发生这个错误。 我的本地和生产节点版本匹配。12.18.4
问题内容: 我正在尝试使用nodejs和socket.io 连接到我的 mongodb 。我能够连接到数据库,因为一旦我-确实- 获得了我在控制台中但在Node.js端上的“连接接受” 通过猫鼬建立与mongodb:// localhost:27017的连接 接下来它立即失败 process.nextTick(function(){throw err;})^ TypeError:undefined
我在MongoDB中有一些地理空间数据,我想找到靠近用户位置并符合某些标准的地方列表。 下面是我的文档结构: 现在我正试图通过纬度,经度,找到有票可用的,并且是某种类型的地方。当我只使用带坐标的NearQuery(不添加查询)时,我得到的是结果,但当我添加查询对象时,我得到的是空列表。 提前致谢
我试图从与参数值相连的子域列表中执行,但得到一个错误。我不确定循环是否正常工作,第一次尝试只是不是一个有效的子域+域。或者它根本不起作用? 误差 代码 新def子校验码 新产出
我正在尝试向所有灯箱添加图像。但是我得到的错误是$不是一个函数。 以下是我正在使用的代码: 谢谢你。
我得到了一个错误:这个$情态动词模态不是一个函数 我通过gulp文件从wwwroot文件夹中的Node_模块获得了ng2-bs3-modal。 我的文件夹结构是: 如果我将ng2-bs3-modal移动到脚本(typescript)文件夹,它将提供jasmin区域。js错误。在上面的结构中,我得到了“this.$modal.modal不是函数”错误,因为ng2-bs3-modal中的所有类型脚本都