jade嵌套循环mysql数组

时间:2013-09-13 17:10:07

标签: mysql sql node.js web express

有jade和loop的问题从mysql查询中抛出一个数组。当我console.log一行我试图记录它时会抛弃它。

{ id: 512,
  first: 'Mark',
  last: 'Neal',
  client: 'City of South Bend',
  employer: null,
  access: null }

哪个好。

现在我正在设置它,所以jade会自动填写列名和列。无论如何这是我的玉码。

block content
  .container
  h1 Data Tables      
  .span12
    table.table.table-striped.table-bordered.table-condensed
      thead
        each f in fields
          th= f.name
      tbody
        each i in results
          tr
            each b in i
              td= b

显然我不能发布图片,因为这是我的第一篇文章,所以我会尽力复制和粘贴。

不是停留在},而是在两个新列中继续这样做。

enter image description here

function (parser, fieldPackets, typeCast, nestTables, connection) {
  var self = this;
  var next = function () {
    return self._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings);
  };
  for (var i = 0; i < fieldPackets.length; i++) {
    var fieldPacket = fieldPackets[i];
    var value;
    if (typeof typeCast == "function") {
      value = typeCast.apply(connection, [new Field({
        packet: fieldPacket,
        parser: parser
      }), next]);
    } else {
      value = (typeCast) ? this._typeCast(fieldPacket, parser, connection.config.timezone, connection.config.supportBigNumbers, connection.config.bigNumberStrings) : ((fieldPacket.charsetNr === Charsets.BINARY) ? parser.parseLengthCodedBuffer() : parser.parseLengthCodedString());
    } if (typeof nestTables == "string" && nestTables.length) {
      this[fieldPacket.table + nestTables + fieldPacket.name] = value;
    } else if (nestTables) {
      this[fieldPacket.table] = this[fieldPacket.table] || {};
      this[fieldPacket.table][fieldPacket.name] = value;
    } else {
      this[fieldPacket.name] = value;
    }
  }
}

function (field, parser, timeZone, supportBigNumbers, bigNumberStrings) {
  var numberString;
  switch (field.type) {
  case Types.TIMESTAMP:
  case Types.DATE:
  case Types.DATETIME:
  case Types.NEWDATE:
    var dateString = parser.parseLengthCodedString();
    var dt;
    if (dateString === null) {
      return null;
    }
    if (timeZone != 'local') {
      if (field.type === Types.DATE) {
        dateString += ' 00:00:00 ' + timeZone;
      } else {
        dateString += ' ' + timeZone;
      }
    }
    dt = new Date(dateString);
    if (isNaN(dt.getTime())) {
      return dateString;
    }
    return dt;
  case Types.TINY:
  case Types.SHORT:
  case Types.LONG:
  case Types.INT24:
  case Types.YEAR:
  case Types.FLOAT:
  case Types.DOUBLE:
    numberString = parser.parseLengthCodedString();
    return (numberString === null || (field.zeroFill && numberString[0] == "0")) ? numberString : Number(numberString);
  case Types.NEWDECIMAL:
  case Types.LONGLONG:
    numberString = parser.parseLengthCodedString();
    return (numberString === null || (field.zeroFill && numberString[0] == "0")) ? numberString : ((supportBigNumbers && (bigNumberStrings || (Number(numberString) > IEEE_754_BINARY_64_PRECISION))) ? numberString : Number(numberString));
  case Types.BIT:
    return parser.parseLengthCodedBuffer();
  case Types.STRING:
  case Types.VAR_STRING:
  case Types.TINY_BLOB:
  case Types.MEDIUM_BLOB:
  case Types.LONG_BLOB:
  case Types.BLOB:
    return (field.charsetNr === Charsets.BINARY) ? parser.parseLengthCodedBuffer() : parser.parseLengthCodedString();
  case Types.GEOMETRY:
    return parser.parseGeometryValue();
  default:
    return parser.parseLengthCodedString();
  }
}

1 个答案:

答案 0 :(得分:0)

如果我们只是查看JADE代码,那么这可能会有所帮助。 我解决了这样一个类似的程序:

- each value, i in results
    tr
    - var count = 0
        - each b in i
            - if(count < Object.keys(value).length)
                td= b
            - count += 1

我更改了自己的变量的名称,因此它可以适合您的JADE文件。

希望代码示例非常自我解释,但要解释它的工作原理:

变量“value”中的第一个将获得数组“results”中的每个项目,即使这是一个只有不同键值的JSON对象。

之后我制作了一个计算键数量的变量。如果您没有对Object.keys(element).length)进行检查,那么它将再打印2个值,即“parse”值和“_typeCast”值。

无论如何,这个count变量只计算使用过的键的数量,这些键后来与JSON数组中的键总数相比,当所有键被打印出来之后它就不再打印了。

希望这对你(或其他人)有帮助!)