向对象添加字段不起作用 javascript

问题描述 投票:0回答:1

我有一个对象数组。如果它们满足特定条件,我会向该对象添加另一个属性并将其保存到我的数据库(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 永远不会出现。有谁知道这是为什么吗?

javascript node.js mongodb mongoose mongodb-query
1个回答
0
投票

尝试这样:

var temp = places[j].toObject();
temp.distance = dist;
nearby.push(temp);
© www.soinside.com 2019 - 2024. All rights reserved.