我对node.js和mongodb很新,所以任何帮助都会受到赞赏。我已经尝试在collection.update操作之前和之后使用ensureIndex,但无论如何它似乎都开始出错。
有人能指出我正确的方向吗?
app.post("/", function(req, res){
var jsonObj = req.body;
var username = jsonObj['Username'];
var longitude = jsonObj['longitude'];
var latitude = jsonObj['latitude'];
var geoJsonObj = {'Username': username, location: {"type" : "Point", "coordinates" : [longitude, latitude]}};
//res.send(req.body);
mongo.Db.connect(mongoUri, function (err, db) {
if (err)
res.send(null);
db.collection('catchmerequests', function(err, collection) {
if (err)
res.send(null);
db.collection.ensureIndex( { location : "2dsphere" }, function (err, collection) {
collection.update({'Username':username}, {$set: geoJsonObj}, {upsert:true}, function(err,result) {
if (err)
res.send(null);
else
res.send(jsonObj);
});
});
});
});
});
在没有ensureIndex的情况下运行以下代码可以完美运行!
答案 0 :(得分:0)
修正了它!您必须在数据库(而不是集合)上调用ensureIndex,并将集合作为第一个参数传递,然后是索引。