2014-12-24 18 views
0

我正在使用Sails作为项目。我使用Chrome POSTMAN创建了一个模型实例。之后,我无法启动sails服务器。错误消息附在下面。Sails服务器无法启动。可能是由于模型中的关联

我意识到这是由于我在模型中有关联。我如何使用POSTMAN正确创建User实例?

api/model/User.js:起重帆时

module.exports = { 

connection: 'localDiskDb', 

attributes: { 

    firstName: { 
     type: 'string', 
     required: true, 
     minLength: 1, 
     string: true, 
     alphadashed: true 
    }, 

    lastName: { 
     type: 'string', 
     required: true, 
     minLength: 2, 
     string: true, 
     alphadashed: true 
    }, 

    cars: { 
     collection: 'car', 
     via: 'owner' 
    }  
} 

错误消息:

/usr/local/lib/node_modules/sails/node_modules/waterline/lib/ 
waterline/core/typecast.js:56 

Object.keys(values).forEach(function(key) { 

       ^
TypeError: Object.keys called on non-object 
    at Function.keys (native) 
    at Cast.run (/usr/local/lib/node_modules/sails/node_modules/waterline/lib/waterline/core/typecast.js:56:10) 
    at /usr/local/lib/node_modules/sails/node_modules/sails-disk/lib/database.js:209:46 
    at Array.map (native) 
    at Database.read (/usr/local/lib/node_modules/sails/node_modules/sails-disk/lib/database.js:208:32) 
    at Array.async.auto.checkData [as 0] (/usr/local/lib/node_modules/sails/node_modules/sails-disk/lib/database.js:59:12) 
    at /usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:459:38 
    at Array.forEach (native) 
    at _each (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:32:24) 
    at Object.async.auto (/usr/local/lib/node_modules/sails/node_modules/async/lib/async.js:430:9) 
+0

通过删除(或移动)您的数据库文件(可能是'.tmp/localDisk.db'),您至少可以再次取消Sails。然后检查任何具有关联的模型,以确保对其他模型的引用是正确的。 – sgress454

回答

0

很显然,我们需要提高在这种情况下,错误消息。

您的via属性对于cars关联不正确。它应该引用Car模型中的反向关联(如果您希望能够在查询中填充汽车的用户)或完全删除。所以,在api/models/Car.js你可以有:

​​

,然后在User.js设置viausers。还尝试在collection属性中大写Car;我不时看到这个神秘的问题。

+0

修复了所有这些问题。汽车模型具有属性'user:{model:'User'}'。我首先启动sails服务器,然后发布到localhost:1337/user/create?firstName = joe&lastName = Small – windchime

+0

修复了所有这些问题。汽车模型具有属性'user:{model:'User'}'。我首先启动没有事先数据的sails服务器,然后POST到localhost:1337/user/create?firstName = joe&lastName = Small Server运行正常。我使用GET localhost:1337/user。结果显示用户joe Small的id是2(?)。之后,我使用Ctrl + C来停止服务器并尝试再次提升。错误消息是相同的。 – windchime

+0

您是否先清除数据库?可能会有一些不好的数据。 – sgress454