如何在Node Express Mongo中定位数据

时间:2018-07-27 07:13:53

标签: node.js express

我具有以下架构来存储坐标:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

// Create Schema
const LocationSchema = new Schema({
    // Matches

    loc: {
        type:
        {
            type: String
        },
        coordinates: [Number]
    },
    member_id: {
        type: String
    }
});

LocationSchema.index({ loc: '2dsphere' });
mongoose.model('locations', LocationSchema);

我还创建了一条获取路线,以到达要显示此存储的坐标数据的页面。当我点击路由时,会在console.log中得到以下内容,用于调试:

{ loc: { coordinates: [ 74.360106, 31.497754 ], type: 'Point' },
  _id: 5b5abd4bdcbd0f4e5c70b799,
  member_id: 'HyQUa4_N7',
  __v: 0 }

这对我来说很好,因为我正在获取坐标和成员ID。以下是我的获取路线的代码,通过该代码我将数据传递到我的快速车把视图:

// Manage Location 
router.get('/userlocation/:member_id', ensureAuthenticated, (req, res) => {

    Location.findOne({ member_id: req.params.member_id })
        .then(locations => {
            console.log(locations);
            res.render('users/userlocation', { locations: locations });
        })
        .catch(error => {
            console.log('could not find user location');
        });


});

我对如何在HTML / View中显示此数据感到困惑。通常我使用{{variable name}}来显示正在传递到视图中的数据。我应该使用哪种格式。我尝试使用{{locations.coordinates [0]}},但这给我一个错误。

请帮助。这是我第一次在Node中尝试这样的事情。

1 个答案:

答案 0 :(得分:0)

您可以像这样访问经度:

{{locations.loc.coordinates[0]}}

我建议您应该这样定义模式:

位置:{type:[Number],索引:“ 2d”},// [,]