我想知道如何在WebStorm中键入提示node.js sequelize模型以获得更好的代码完成.
至少我能弄明白,如何获得模型属性的代码完成.但是我错过了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');
}