WebStorm Node.Js Sequelize Model类型提示

WebStorm Node.Js Sequelize Model type hint

本文关键字:类型 提示 Model Sequelize Node Js WebStorm      更新时间:2023-09-26

我想知道如何在WebStorm中提示node.js序列化模型以更好地完成代码。

至少我能够弄清楚,如何获得模型属性的代码完成。但是我错过了sequelize的模型函数。

这是我所得到的:

模型/exampleModel.js

/**
 * @module ExampleModel
 * @typedef {Object}
 * @property {ExampleModel} ExampleModel
 */

 /**
 *
 * @param sequelize {sequelize}
 * @param DataTypes {DataTypes}
 * @returns {Model}
 */
module.exports = function (sequelize, DataTypes) {
    var ExampleModel = sequelize.define('ExampleModel', {
       id: {
          type: DataTypes.BIGINT.UNSIGNED,
          primaryKey: true
       },
       someProperty: {
          type: DataTypes.BOOLEAN,
          defaultValue: true
       }
    }, {
        classMethods: {
            associate: function (models) {
               ExampleModel.belongsTo(models.AnotherModel, {foreignKey: 'id'});
            }
        }
    });
    return ExampleModel;
};

模型/index.js

'use strict';
/**
 * @module models
 * @typedef {Object} models
 * @property {ExampleModel} ExampleModel
 * @property {AnotherModel} AnotherModel
 */
var db        = {};
// code that automatically fills db with models from files
// resulting in something like { ExampleModel : ExampleModel, AnotherModel: AnotherModel}
module.exports = db;

现在我可以输入

var models = require(__base + 'models');
models.Ex // Webstorm suggets "ExampleModel"
models.ExampleModel. // WebStorm suggets "id", "someProperty", "classMethods" (the last one is weird, but doesn't matter)

并获得模型及其属性的代码完成。现在我缺少了像"upsert","create",…这样的序列化方法

有人知道如何获得这些代码完成吗?

我通常添加假方法来改进IDE自动完成

db.sequelize = sequelize;
db.Sequelize = Sequelize;
// eslint-disable-next-line
function enableAutocomplete() {
  /**  @type {Model|Address|*} */
  db.Address = require('./address')();
  /**  @type {Model|Group|*} */
  db.Group = require('./group')();
  throw new Error('this function for IDE autocomplete');
}

Inside WebStorm 2019将鼠标悬停在您的Sequelize上包括:

require('sequelize');

你应该看到黄色的灯泡。点击黄色灯泡,你就可以选择"安装TypeScript定义以获得更好的类型信息"

这个特性在WebStorm文档中也有记录,这里的例子是express.jshttps://www.jetbrains.com/help/webstorm/configuring-javascript-libraries.html