Mongoose: рднреВ-рд╕реНрдерд╛рдирд┐рдХ рдХреНрд╡реЗрд░реА рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рджрд┐рд╕ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рд╕рдВрднрд╛рд╡рд┐рдд рдмрдЧ

рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?

рднреВ-рд╕реНрдерд╛рдирд┐рдХ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕рд╣реЗрдЬ рдирд╣реАрдВ рд╕рдХрддреЗ

рдпрд╣рд╛рдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рдореЗрд░реА рд╕реНрдХреАрдорд╛ рд╣реИ:

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

var userSchema   = new Schema({
  email: {
      type: String,
      required: true,
      unique: true
    },
    password: {type: String, required: true},
    name: {type: String, required: true},
    type: {type: Boolean, default: false, required: true},
    geo: {
      type: { type: String, enum: "Point", default: "Point" },
      coordinates: { type: [ Number ],   default: [ 0,0 ] }
    }
});

userSchema.index({geo: '2dsphere'})
const User = mongoose.model('User', userSchema);
module.exports = User

рдореИрдВ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

db.users.insert({email: '[email protected]', password: 'tebrwrw', name: 'teste', type: true, geo: { coordinates: [ 40, 5 ]} })

рдФрд░ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ:

WriteResult({
        "nInserted" : 0,
        "writeError" : {
                "code" : 16755,
                "errmsg" : "Can't extract geo keys: { _id: ObjectId('5a31d79f369885e770a989b7'), email: \"[email protected]\", password: \"tebrwrw\", name: \"teste\", type: true, geo: { coordinates: [ 40.0, 5.0 ] } }  unknown GeoJSON type: { coordinates: [ 40.0, 5.0 ] }"
        }
})

рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ node.js, mongoose рдФрд░ MongoDB рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рдирд╡реАрдирддрдо

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж

    // in the schma declaration
    'loc': { type: { type: String, enum: "Point", default: "Point" }, coordinates: { type: [Number], default: [0,0] } }

    // after schema declaration*
    schema.index( { loc: "2dsphere" } );

    // and then, how I create it
    model.loc = { type: "Point", coordinates: [newarena.lng, newarena.lat] };

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдВрджрд░реНрднрд┐рдд рдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП:

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Mongoose рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИ (рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ) рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдпрд╛ рддреЛ StackOverflow рдпрд╛ Gitter рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ

рдЖрдкрдХреЛ рдЙрди рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЙрди рдмрдЧреЛрдВ/рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмреИрдХрд▓реЙрдЧ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реВрдВ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж

    // in the schma declaration
    'loc': { type: { type: String, enum: "Point", default: "Point" }, coordinates: { type: [Number], default: [0,0] } }

    // after schema declaration*
    schema.index( { loc: "2dsphere" } );

    // and then, how I create it
    model.loc = { type: "Point", coordinates: [newarena.lng, newarena.lat] };

@Inateno рдзрдиреНрдпрд╡рд╛рдж ... рд╣реИ рдирд╛ !!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tarun1793 picture tarun1793  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

weisjohn picture weisjohn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lukasz-zak picture lukasz-zak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Soviut picture Soviut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jeremyml picture jeremyml  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ