2017-12-18 15 views
0

Mit Mongoose erstellen, kann ich nicht Standortdaten in die Datenbank einfügen:Kann nicht Mongoose Objekt mit Standortfeld

Can't extract geo keys from object, malformed geometry? 

Es scheint, dass die POST-Anforderung OK ist (LOG A): Es hat einen Standort (‘ loc ') Feld, aber das Objekt, das ich aus dieser POST-Anfrage erstellen fehlt die 'loc' Felddaten:

Hier ist mein Schema:

model/Article.js

var ArticleSchema = new mongoose.Schema({ 
    slug: {type: String, lowercase: true, unique: true}, 
    title: String, 
    description: String, 
    body: String, 
    loc : { type: {type:String}, coordinates: [Number]}, 
    favoritesCount: {type: Number, default: 0}, 
    comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }], 
    tagList: [{ type: String }], 
    author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } 
}, {timestamps: true}); 

ArticleSchema.index({loc: '2dsphere'}); 

Routen/Article.js

router.post('/', auth.required, function(req, res, next) { 
    User.findById(req.payload.id).then(function(user){ 
     if (!user) { return res.sendStatus(401); } 

     var article = new Article(req.body.article); 

     // LOG A 
     console.log(req.body.article); 

     // LOG B 
     console.log(article); 

     article.author = user; 

     return article.save().then(function(){ 
     return res.json({article: article.toJSONFor(user)}); 
     }); 
     ... 

Und hier sind die Ausgabe:

LOG A: req.body.article

{ title: 'article title', 
    description: 'about section', 
    body: 'Article body', 
    tagList: [], 
    loc: '{"type":"Point","coordinates":[38.9173025,-77.220978]}' 
} 

LOG B: Artikel erstellt mit var article = neuer Artikel (req.body.article);

{ loc: { coordinates: [] }, 
    favoritesCount: 0, 
    comments: [], 
    tagList: [], 
    _id: 5a384f502c9912312c6dd89d, 
    body: 'Article body', 
    description: 'about section', 
    title: 'article title' 
} 

Mein Problem ist, dass die Lok Feld begann "{Koordinaten: []}" statt { "type": "Punkt", "Koordinaten": [38,9173025, -77,220978]} beim Erstellen des Objekts "Artikel".

Warum befinden sich die Positionsdaten nicht im Objekt?

Ich habe mir ein diese Frage zuerst: Location in mongoose, mongoDB

+0

Can't es geworfen, weil es string (beachten Sie die einzelnen Anführungszeichen um den Wert für die Variable in loc Log A Ausgang) während Mungo ist Objekt erwartet? – Veeram

Antwort

0

Dank @Veeram: Das Problem war meine POST-Anfrage:

In meinem Angular vorne: Die Lage als Zeichenfolge anstelle ein Objekt gesendet wurde -Ende:

article.model.ts VOR

export class Article { 
    .... 
    loc: string 
    .... 
} 

article.model.ts AFTER

class Location { 
    constructor(
    public type: string, 
    public coordinates: Array<number> = [] 
){} 
} 

export class Article { 
    .... 
    loc: Location 
    .... 
} 
Verwandte Themen