2014-11-24 28 views
1

這適用於sails-disk適配器,但不適用於sails-mongo或sails-postgresql。Sails.js關聯:一對多關聯中沒有保存到MongoDB或Postgres(與磁盤數據庫)的「多」一側

我有2個模型,飼料和事件,飼料可以屬於許多事件。

當我創建或保存具有關聯到一個或多個事件(通過「posts」屬性)的新Feed記錄時,不會保存「posts」屬性。但是,當我創建或保存一個具有與一個Feed關聯的新事件(通過「發佈」屬性)時,「發佈」屬性會正確保存。問題:我無法從Feed端查詢Feed及其事件(使用Sails的.populate),只能從Event端查詢。

我可以確認傳遞給Feed.create的數據包含「posts」屬性,然後來自回調的響應沒有。

sails.log.debug('Before Feed.create', data); 

    Before Feed.create { id: 64988, 
    username: 'anevening', 
    displayName: 'An Evening', 
    coverImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png', 
    profileImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png', 
    description: undefined, 
    links: [], 
    source: 
    { domain: 'dola.com', 
    id: 64988, 
    url: 'http://www.dola.com/artists/an-evening' }, 
    posts: [ 3055349, 3062549, 2866105, 2866107 ] } 

Feed.create(data).exec(sails.log.debug); 

    { username: 'anevening', 
    displayName: 'An Evening', 
    coverImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png', 
    profileImage: 'http://res.cloudinary.com/dostuff-media/image/upload/v1387144880/metro-bkg_1-30.png', 
    description: null, 
    links: [], 
    source: 
    { domain: 'dola.com', 
    id: 64988, 
    url: 'http://www.dola.com/artists/an-evening' }, 
    createdAt: Sat Nov 22 2014 14:53:21 GMT-0800 (PST), 
    updatedAt: Sat Nov 22 2014 14:53:21 GMT-0800 (PST), 
    id: '64988' } 

這裏是我的模型是這樣的:

Feed.js:

module.exports = { 

    attributes: { 

    id: { 
     type: 'integer', 
     unique: true, 
     primaryKey: true 
    }, 
    ... 
    posts: { 
     collection: 'event', 
     via: 'posted' 
    } 
    ... 

    } 
}; 

Event.js:

module.exports = { 

    attributes: { 

    id: { 
     type: 'integer', 
     unique: true, 
     primaryKey: true 
    }, 
    ... 
    posted: { 
     model: 'feed' 
    } 
    ... 

    } 

}; 

最後,這裏就是我的配置/ models.js和config/connections.js的外觀如下:

個連接:{

'default': 'mongo', 

    localDiskDb: { 
     adapter: 'sails-disk' 
    }, 

    mongo: { 
     adapter: 'sails-mongo', 
     url: process.env.MONGO_HOST', 
     schema: true 
    }, 

    postgres: { 
     adapter: 'sails-postgresql', 
     url: process.env.POSTGRES_HOST, 
     schema: true, 
     ssl: true 
    } 

    }, 

    models: { 
    connection: 'mongo', 
    migrate: 'alter' 
    } 
+0

我創建了一個新的職位的問題的更詳細的聲明:http://stackoverflow.com/questions/27896657/sails-js-many-to-many-associations-throw-error-on -create-and-populate – senornestor 2015-01-12 06:48:28

回答

1

.create方法不返回填充的數據在它的回調。如果您查詢Feed模型並填充posts關聯,則應該看到數據。

Feed.find() 
.populate('posts') 
.exec(console.log); 
+0

感謝您的快速響應,@particlebanana。不幸的是,'.populate'爲關聯屬性返回空值。我一直在使用Sails控制檯測試'Feed.find()。populate('posts')。exec(console.log);'用不同的適配器。使用sails-disk,我可以獲得預期的填充值。隨着sails-mongo,填充的值是空的。使用sails-postgresql,我得到以下錯誤:'Details:TypeError:Can not convert null to object undefined ' – senornestor 2014-11-24 19:48:46

+0

我注意到我的Feed模型上除Feed.find()之外的任何查詢都返回undefined while我的事件模型查詢按預期工作。例如,如果我從'Feed.find()'的一個結果中獲取一個ID並嘗試'Feed.find(12345)',它將返回undefined。我使用mongo控制檯獲得相同的結果。這似乎暗示我的Feed模型有什麼問題? – senornestor 2014-11-24 20:17:36