1

遇到玉和循环问题时,会从 mysql 查询中抛出一个数组。当我console.log连续尝试记录它时,它会输出这个。

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

这很好。

现在我正在尝试设置它,以便玉将自动填写列名和列。无论如何,这是我的玉代码。

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

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

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

在此处输入图像描述

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();
  }
}
4

1 回答 1

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”值。

无论如何,这个计数变量只计算使用的键的数量,稍后将其与 JSON 数组中的键总数进行比较,当打印所有键时,它将不再打印。

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

于 2014-01-06T03:40:06.330 回答