0

我无法使用 postgresql 版本 0.9.7 提升帆 0.9.9 版本

这是我收到的错误消息

调试:降低帆...

/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:285
      if(self._schema[key].type === 'text') caseSensitive = false;
                          ^
TypeError: Cannot read property 'type' of undefined
  at Object.sql.and (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:285:27)
  at /home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:256:19
  at Array.forEach (native)
  at [object Object].Query.where (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:195:24)
  at /home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:119:14
  at Array.forEach (native)
  at [object Object].Query._build (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:115:32)
  at [object Object].Query.find (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/query.js:35:21)
  at __FIND__ (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/adapter.js:362:40)
  at after (/home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/adapter.js:506:7)
  at /home/mandeep/iqr/thirstt/node_modules/sails-postgresql/lib/adapter.js:492:7

早些时候运行良好。不知道出了什么问题。我试过删除node_modules目录并做了一个npm install之后,npm cache clear但仍然不断收到这个错误。我无法升级到 Sails 0.10 版,因为它是一个相当大的项目,升级将是一个非常大的努力。如何在同一版本中解决此问题?任何帮助将不胜感激。

4

1 回答 1

1

我弄清楚了这个问题。对我来说似乎是一个sails-postgresql 问题。我在 config/bootstrap.js 中的模型上执行 findOne,当该表中没有记录时它失败了

这是失败的部分( node_modules/sails-postgresql/lib/query.js ):

Query.prototype.operators = function() {

  var self = this;

  var sql = {
    and: function(key, options, comparator) {
      var caseSensitive = true;

      // Check if key is a string
      if(self._schema[key].type === 'text') caseSensitive = false;

      processCriteria.call(self, key, options, '=', caseSensitive);
      self._query += (comparator || ' AND ');
    },

我记录了自我的价值。当我在 bootstrap.js 中查询的表中存在数据时,self 看起来像这样

{ _values: 
   [ 2,
     1,
     'Mon, 29 Sep 2014 09:46:08 GMT',
     'Thu, 06 Nov 2014 08:24:34 GMT' ],
  _paramCount: 5,
  _query: 'UPDATE "cache" SET "val" = $1, "id" = $2, "createdAt" = $3, "updatedAt" = $4 ',
  _schema: 
   { val: { type: 'integer' },
     id: { type: 'integer', primaryKey: true, autoIncrement: true },
     createdAt: { type: 'timestamp with time zone' },
     updatedAt: { type: 'timestamp with time zone' } } 
}

但是,当表中没有数据时, self 看起来像这样

{ _values: [],
  _paramCount: 1,
  _query: 'SELECT * FROM "cache" ',
  _schema: true 
}

然后它访问 self._schema[key].type 引发错误,因为 self._schema 在这种情况下不是对象。在向表中插入数据时,事情得到了解决,但我相信这是sails-postgresql 中的一个逻辑错误,因为即使表中没有数据它也应该可以正常工作。

于 2014-11-06T08:22:05.747 回答