【问题标题】:Adding fields to objects is not working javascript向对象添加字段不起作用javascript
【发布时间】:2016-04-20 20:39:48
【问题描述】:

我有一个对象数组。如果它们满足某个条件,我会向对象添加另一个属性并将其保存到我的数据库 (Mongo)。但是,附加属性永远不会出现在数据库中。我在保存之前将它记录到控制台以确认它在那里,但是当我检查 mongo shell 时它从未出现。

function nearbyPlaces(distance, unit) {
	db.Places.find({}, function (err, places) {
		var distance = Number(distance) || 1000
		var unit = unit || 'km'

		for(var i = 0; i < places.length; i++) {
			var nearby = []
			var start = {}
			if(places[i].latitude && places[i].longitude){
				start.latitude = places[i].latitude
				start.longitude = places[i].longitude
			}
			for(var j = 0; j < places.length; j++){
				var end = {}
				if(i !== j && places[j].latitude && places[j].longitude) {
					end.latitude = places[j].latitude
					end.longitude = places[j].longitude
					var dist = haversine(start, end, {unit: unit})
					if(dist <= distance) {
						if(places[j]) {
							var temp = places[j]
							temp.distance = dist
							nearby.push(temp)
						}
					}
				}
			}
			//console.log('distance is',nearby[0].distance)
            // this prints out correctly
			
			var record = {
				origin: places[i].origin,
				latitude: places[i].latitude,
				longitude: places[i].longitude,
				nearby: nearby,
				max_distance: distance,
				unit: unit
			}

			console.log('saving record')

			var thingy = new db.Nearby(record)
			thingy.save(function (err) {
				if(err) {
					console.log(err)
				}
				if(!err) {
					console.log('saved')
				}

			})
			
		}
	})
}

// This line comes from index.js
exports.Nearby = Mongoose.model('Nearby', require('./nearby'))

// The Nearby schema
var mongoose = require('mongoose')
var db = require('./index')

var trimmedString = {type: String, trim: true}

var NearbyPlaces = new mongoose.Schema({
	origin: String,
	latitude: Number, // latitude in degrees
	longitude: Number,
	nearby: Array,
	max_distance: Number,
	unit: String
})

NearbyPlaces.index({origin: 1})
NearbyPlaces.index({distance: 1})
NearbyPlaces.index({unit: 1})

module.exports = NearbyPlaces

nearby[x].distance 永远不会出现。有谁知道这是为什么?

【问题讨论】:

  • 您能否编辑代码以便我们可以看到“nearby”的初始化时间/位置?
  • @dbenson 我已经包含了完整的功能
  • 您的 mongo db 是否使用 mongoose 作为其方案?
  • @Tony 是的。附近是一个数组类型。
  • 显示Nearby 模型的“模式”定义。您的属性可能没有正确定义。你也做错了整个过程。阅读Geospatial indexes and Queries,那里有比您正在编写的代码更好的替代方案。

标签: javascript node.js mongodb mongoose mongodb-query


【解决方案1】:

像下面这样试试,

var temp = places[j].toObject() temp.distance = dist nearby.push(temp)

【讨论】:

    猜你喜欢
    • 2022-06-12
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2020-07-30
    • 2022-01-18
    • 1970-01-01
    • 2010-12-08
    • 2015-04-10
    相关资源
    最近更新 更多