2015-06-19 19 views
2

我正在使用sequelize ORM連接到MYSQL數據庫 - 我如何在表/對象模型中定義地理點?由於sequelize沒有POINT數據類型,我可以傳入一個表示MYSQL類型的字符串嗎?如何使用mySQL定義和使用地理點集合

db.define(modelName, { 
    id: { 
     type: Sequelize.INTEGER, 
     primaryKey: true, 
     autoIncrement: true, 
     allowNull: false 
    }, 
    location:{ 
     type:'POINT' //how would I define this?? 
    }, 
    createdBy: { 
     type: Sequelize.INTEGER, 
     references: { 
      model: 'User', 
      key: 'id' 
     } 
    }, 
    photoId: { 
     type: Sequelize.UUID 
    }, 
    caption: { 
     type: Sequelize.STRING 
    } 
} 

回答

0

您可以通過STRING創建和實例創建自定義toJSON實現,所以你可以得到你想要一個POINT

Data Types Instance methods

在這些實例方法,你也可以定義一個toJSON定製的方法,該方法將通過res.send(obj)

+0

我需要將其存儲在MySQL數據庫中一個點的類型,以及不作爲一個字符串 - 利用地理空間索引。這種技術將它作爲本地點存儲在我的sql中,還是將toJSON只是在輸出中以我想要的方式渲染點? – MonkeyBonkey

+0

不要這麼想,我建議你在Sequelize repo上添加一個問題作爲功能請求,或者創建一個PR來支持這種數據類型 –

+0

看起來好像已經有一個pull請求https:// github。 com/sequelize/sequelize/pull/3828 – MonkeyBonkey

7

發送對象時,由於Postgres的3.4.0 Sequelize支持幾何圖形被自動調用。基於提交消息,MySQL也被支持。

您可以添加新的屬性是這樣的:

point: { 
    type: Sequelize.GEOMETRY('POINT'), 
}, 

MySQL的支持types是:

var SUPPORTED_GEOMETRY_TYPES = ['POINT', 'LINESTRING', 'POLYGON']; 
相關問題