水线试图访问ID字段

时间:2015-03-12 15:06:40

标签: node.js sails.js waterline

目前我正在使用此模型(使用sails.js)

module.exports = {

   tableName: 'player_deaths',
   autoCreatedAt: false,
   autoUpdatedAt: false,
   attributes: {

      player_id: {

         required: true,
         type: 'integer'
      },
      time: {

         required: true,
         type: 'integer'
      },
      level: {

         required: true,
         type: 'integer'
      },
      killed_by: {

         required: true,
         type: 'string'
      },
      is_player: {

         required: true,
         type: 'integer'
      },
      mostdamage_by: {

         required: true,
         type: 'string'
      },
      mostdamage_is_player: {

         required: true,
         type: 'integer'
      },
      unjustified: {

         required: true,
         type: 'integer'
      },
      mostdamage_unjustified: {

         required: true,
         type: 'integer'
      }
   },
   autoPk: false,
}

我称之为

PlayersDeaths.find().sort('time desc').exec(function(err, data) {

         if(err || data.length === 0) {

            console.log(err,data)
            req.flash('errors', 'No deaths found');

            return res.redirect('/');
         }

         return res.view('community/deaths', { deaths: data});
      });

我正在犯这个错误

  

字段列表中的未知列'playersdeath.id'

检查我的模型我甚至没有看到列出的ID属性...那么为什么要尝试访问它?!

(该表没有pk)

2 个答案:

答案 0 :(得分:1)

看起来像是主键。如果您使用autoPk:false,那么您需要定义自己的PK https://github.com/balderdashy/waterline-docs/blob/master/models.md#autopk

但是,您仍然可以使用model.native()model.query()(取决于您的适配器)来避免这种情况

http://sailsjs.org/#!/documentation/reference/waterline/models/native.html http://sailsjs.org/#!/documentation/reference/waterline/models/query.html

答案 1 :(得分:-1)

如果您定义了数据库模式,可能需要设置这样的模型

module.exports = {
    migrate: 'safe',
    autoPK : false,
    autoCreatedAt: false,
    autoUpdatedAt: false,

attributes: {
// ------
}