Вот оптимизированная реализация:
public static final Comparator<CharSequence> VERSION_ORDER = new Comparator<CharSequence>() {
@Override
public int compare (CharSequence lhs, CharSequence rhs) {
int ll = lhs.length(), rl = rhs.length(), lv = 0, rv = 0, li = 0, ri = 0;
char c;
do {
lv = rv = 0;
while (--ll >= 0) {
c = lhs.charAt(li++);
if (c < '0' || c > '9')
break;
lv = lv*10 + c - '0';
}
while (--rl >= 0) {
c = rhs.charAt(ri++);
if (c < '0' || c > '9')
break;
rv = rv*10 + c - '0';
}
} while (lv == rv && (ll >= 0 || rl >= 0));
return lv - rv;
}
};
Результат:
"0.1" - "1.0" = -1
"1.0" - "1.0" = 0
"1.0" - "1.0.0" = 0
"10" - "1.0" = 9
"3.7.6" - "3.7.11" = -5
"foobar" - "1.0" = -1
Проблема в том, что вы импортируете файл модели, и это неправильно, ваш index.js
в модели отображает все файлы модели, добавляя экземпляр sequelize и типы данных. Вы всегда должны импортировать index
.
Если вы импортируете модель index
и дадите console.log()
в ней, то увидите, что у вас есть объект вашей модели и экземпляр сиквелиза.
const db = require('../../sequelize/models/index');
console.log(db)
Внутри выхода будет что-то вроде этого: Пример:
Researcher: Researcher,
sequelize:
Sequelize { ....
Для доступа к вашей модели вы можете сделать следующее. Используя деструктурирующее назначение , вы извлекаете модель из индекса.
Результат
blockquote>const { Researcher } = require('../../sequelize/models/index') const createResearcher= async (req, res) => { try{ await Researcher.create({name: 'name', email: 'email', password: 'password'}); return res.status(201).send('sucesso') }catch (err){ return res.status(500).send('error'); } }
Каждый раз, когда вы создаете новый файл в папке модели, он будет отображаться с помощью
index.js
и добавляться в матрицу, а с помощью деструктурирования вы можете получить или используйте сам матричный ключ.const db = require('../../sequelize/models/index') const createResearcher= async (req, res) => { try{ await db.Researcher.create({name: 'name', email: 'email', password: 'password'}); return res.status(201).send('sucesso') }catch (err){ return res.status(500).send('error'); } }