При отладке обратного вызова mongoose
я обнаружил, что либо у underscore.js, либо на языке JavaScript, похоже, проблема с большими числами.Разбивка больших номеров underscore.js _.contains
В приведенном ниже примере я хранил небольшое число и строку, содержащую ObjectId из mongoose (24-значное число), чтобы показать проблему как можно яснее.
var users = ["32", "300000000000000000000002"];
alert(_.contains(users, "32")); // true
alert(_.contains(users, (32).toString())); // true
alert(_.contains(users, "300000000000000000000002")); // true
alert(_.contains(users, (300000000000000000000002).toString())); // false - wait wat ?
Вопрос, конечно, заключается в том, как вернуть последний звонок?
Я бы предпочел не преобразовывать массив users
в массив чисел, потому что (1) массив может быть огромным в производственном контексте и (2) мне может потребоваться выполнить другие операции над массивом.
'(300000000000000000000002) .ToString() ===" 3e + 23 "' – Bergi
24 цифры просто для js http://stackoverflow.com/questions/307179/what-is-javascripts-highest-integer-value-that-a-number-can-go-to- без-losin – Pevara
Пока ваш диагностический ввод оценен и помог мне, я все еще ищу решение – blagae