使用Mongoose连接数据库:
var mongoose = require('mongoose');
var poi_schema = mongoose.Schema({
name: String,
geo: { // GeoJSON
type: String,
coordinates: [Number, Number]
}
});
var Poi = mongoose.model('Poi', poi_schema);
var db = mongoose.connection;
mongoose.connect('mongodb://localhost:27017/test');
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
var poi = new Poi();
poi.name = 'hello';
poi.geo.type = 'Point';
poi.geo.coordinates = [34, 23];
poi.save(function(err, poi) {
if (err) console.error('save error', err);
else console.log(poi._id, poi.name, 'saved');
});
});
这将失败,错误为TypeError: Cannot set property 'type' of undefined
。
一旦我更改单词"输入"对别的东西,它确实有效。 为什么?我实际上试图使用2dsphere索引存储GeoJSON,我认为这需要调用字段名称"键入"。而使用Mongoose它不起作用?!
答案 0 :(得分:2)
你必须这样做:
geo: { // GeoJSON
type: {type: String},
coordinates: [Number, Number]
}
对于使用2dsphere索引,您不需要输入:' Point'属性,除非你想存储的不仅仅是Point。