Node.js + 续集 + SQL 服务器

Node.js + Sequelize + SQL Server

我正在使用 SQL Server 2005 和 node.js 以及

"dependencies": {
    "sequelize": "^4.42.0",
    "tedious": "^5.0.3"
  }

我正在尝试创建这个数据库

const con = require('./../dbo/connect');
const Processo = con.db.define('processo', {
    Id: {
        type: con.Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    Cavalo: { type: con.Sequelize.STRING },
    Reboque: { type: con.Sequelize.STRING },
    CNPJTransportadora: { type: con.Sequelize.STRING },
    Motorista: { type: con.Sequelize.STRING },
    CNH: { type: con.Sequelize.STRING },
    EntradaCarreta: { type: con.Sequelize.DATE },
    SaidaCarreta: { type: con.Sequelize.DATE },
    Tara: { type: con.Sequelize.DECIMAL(10, 3)  },
    PesoBruto: { type: con.Sequelize.DECIMAL(10, 3)  },
    Conteiner: { type: con.Sequelize.STRING },
    Dimensao: { type: con.Sequelize.STRING },
    IsoCode: { type: con.Sequelize.STRING },
    GMCI: { type: con.Sequelize.STRING },
    DT: { type: con.Sequelize.STRING },
    Navio: { type: con.Sequelize.STRING },
    Viagem: { type: con.Sequelize.STRING },
    Origem: { type: con.Sequelize.STRING },
    CodOrigem: { type: con.Sequelize.STRING },
    Destino: { type: con.Sequelize.STRING },
    CodDestino: { type: con.Sequelize.STRING },
    Regime: { type: con.Sequelize.STRING }
});
Processo.sync();
module.exports = {
    Processo,
    Sequelize:con.Sequelize
};

但是当运行同步功能时,我得到这个错误:

Unhandled rejection SequelizeDatabaseError: Column, parameter, or variable #7: Cannot find data type DATETIMEOFFSET. at Query.formatError (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\s equelize\lib\dialects\mssql\query.js:315:12) at Request.connection.lib.Request [as userCallback] (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\r ecepcao-processo\node_modules\sequelize\lib\dialects\mssql\query.js:107:25) at Request.callback (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\te dious\lib\request.js:37:27) at Connection.endOfMessageMarkerReceived (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-pro cesso\node_modules\tedious\lib\connection.js:2118:20) at Connection.dispatchEvent (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_mo dules\tedious\lib\connection.js:1136:36) at Parser.tokenStreamParser.on (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node _modules\tedious\lib\connection.js:941:14) at Parser.emit (events.js:189:13) at Parser.parser.on.token (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modu les\tedious\lib\token\token-stream-parser.js:27:14) at Parser.emit (events.js:189:13) at addChunk (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\readable-s tream\lib_stream_readable.js:296:12) at readableAddChunk (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\re adable-stream\lib_stream_readable.js:278:11) at Parser.Readable.push (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_module s\readable-stream\lib_stream_readable.js:239:10) at Parser.Transform.push (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modul es\readable-stream\lib_stream_transform.js:139:32) at Parser.afterTransform (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modul es\readable-stream\lib_stream_transform.js:88:10) at Parser._transform (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\t edious\lib\token\stream-parser.js:41:7) at Parser.Transform._read (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modu les\readable-stream\lib_stream_transform.js:177:10) at Parser.Transform._write (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_mod ules\readable-stream\lib_stream_transform.js:164:83) at doWrite (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\readable-st ream\lib_stream_writable.js:405:139) at writeOrBuffer (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\reada ble-stream\lib_stream_writable.js:394:5) at Parser.Writable.write (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modul es\readable-stream\lib_stream_writable.js:303:11) at Parser.addEndOfMessageMarker (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\nod e_modules\tedious\lib\token\token-stream-parser.js:45:24) at Connection.message (C:\Users\tiago.santos\Desktop\Labs\diariamente-ts\node\gmci-e\recepcao-processo\node_modules\ tedious\lib\connection.js:2107:32)

我知道离最好的解决方案还有很远的距离,但我是这样解决的:

'use strict';
const fs = require('fs');
const paths = {
    datatypes: `${__dirname}/../../node_modules/sequelize/lib/dialects/mssql/data-types.js`
};

async function rewriteFile(path, find, replace) {
    let data = fs.readFileSync(paths[path], 'utf-8');
    let newValue = data.replace(find, replace);
    return await fs.writeFileSync(paths[path], newValue, 'utf-8');
}
module.exports = {
    rewriteFile
}

和运行 开始之前的以下代码:

const sequelizeBug = require('./../api/helpers/sequelize-bug');
sequelizeBug.rewriteFile('datatypes', 'DATETIMEOFFSET','DATETIME');

如果有人有最好的解决方案,我接受,thks。