2017-08-06 29 views
1

上午使用sails-sqlserver作爲我的適配器我只是試圖在以下模型之一中的數據庫中創建一個新行。TypeError:無法讀取未定義風帆的屬性'集合'

這是第一種模式:

// Roles.js 

module.exports = { 

    autoCreatedAt: false, 
    autoUpdatedAt: false, 

    attributes: { 

    name: { 
     type: 'string' 
    }, 

    approval_level: { 
     model: 'approval_levels' 
    }, 

    specified: { 
     type: 'boolean' 
    },     
    entity_operations: { 
     collection: 'entity_operations', 
     via: 'roles', 
     dominant: true 
    }, 

    users: { 
     collection: 'system_users', 
     via: 'role' 
    } 

    }, 

    createRole: function (name, approval_level, cb) { 

    values = { 
     name: name, 
     approval_level: approval_level 
    }; 

    Roles.create(values).exec(cb); 
    }, 


    getAll: function (cb) { 
    Roles.find().exec(cb); 
    } 


}; 

這是第二種模式:

// Entity_Operations.js 

module.exports = { 

    autoCreatedAt: false, 
    autoUpdatedAt: false, 

    attributes: { 

     entity_name: { 
      type: 'string' 
     }, 

     operation: { 
      model: 'operations' 
     }, 

     roles: { 
      collection: 'roles', 
      via: 'entity_operations' 
     } 

    }, 

    getAll: function (cb) { 
     Entity_operations.find().exec(cb); 
    } 

}; 

這兩種模式有一個多對多的關係在一起,什麼我試圖做的就是這樣的:

Entity_operations.create({ 
      entity_name: 'example', 
      operation: 6 
     }).exec((err, entity: Entity_operations) => { 
      console.log(entity); 
     }); 

然後這個錯誤出來沒有解釋任何可以幫助我知道f rom其中這個錯誤是來自:

/opt/nodejs/back-heaven/dev/node_modules/sails-sqlserver/lib/adapter.js:435 
     Object.keys(connections[connection].collections[collection].definition).forEach(function(key) { 
             ^
TypeError: Cannot read property 'collections' of undefined 
    at Object.getPrimaryKey (/opt/nodejs/back-heaven/dev/node_modules/sails-sqlserver/lib/adapter.js:435:42) 
    at Object.create (/opt/nodejs/back-heaven/dev/node_modules/sails-sqlserver/lib/adapter.js:374:24) 
    at module.exports.create (/opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/adapter/dql.js:84:13) 
    at child.createValues (/opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/query/dql/create.js:220:16) 
    at /opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/query/dql/create.js:74:20 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:726:13 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:52:16 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:269:32 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:44:16 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:723:17 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:167:37 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:52:16 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:269:32 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:44:16 
    at child.<anonymous> (/opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/utils/schema.js:152:44) 
    at fn (/opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:41:10) 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:181:20 
    at iterate (/opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:262:13) 
    at Object.async.forEachOfSeries.async.eachOfSeries (/opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:281:9) 
    at Object.async.forEachSeries.async.eachSeries (/opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:214:22) 
    at Object.runner.beforeCreate (/opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/utils/callbacksRunner.js:44:9) 
    at /opt/nodejs/back-heaven/dev/node_modules/waterline/lib/waterline/query/dql/create.js:180:17 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:718:13 
    at iterate (/opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:262:13) 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:274:29 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:44:16 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:723:17 
    at /opt/nodejs/back-heaven/dev/node_modules/async/lib/async.js:167:37 

當我試圖在控制它succeded我在我自己的實現這個播種機開始前的播種者試圖用同樣的代碼,我做一個帆編程對象,並調用帆.load

這樣的:

let myApp = new Sails(); 

    myApp.load({}, (err) => { 
     if (err) throw err; 

     // this execute the seeds in the database seeder class 
     let seeder = require(`../../api/seeders/${scope.args[0]}`); 
     seeder.handle(() => { 

     myApp.lower((err) => { 
      if (err) throw err; 
      console.log(`Seeder ` + scope.args[0] + ` finished seeding`); 
     }); 

     }); 

    }); 

我也試圖與sails.lift()和仍然相同的錯誤。

回答

0

我已經找到了問題,我只是做一個回調函數,應該調用sails.lower()卸載或關閉帆我把它放在錯誤的地方,甚至在模型創建代碼開始之前,它被稱爲。只是忘記在數據庫回調函數中調用它。

因此,對於在風帆中遇到同樣問題的任何其他人,您的問題是風帆實際上並未加載,或者當您開始工作的風帆開始工作時,但之後由於某些原因風帆停止了,模型做這個奇怪的問題,我希望帆在他們的代碼中處理這些錯誤,以顯示更具表達性的錯誤信息。

我希望這可以幫助任何人。

相關問題