Я хочу сохранить очень большое число 16 di git в моей базе данных, как показано ниже:
{
"_id" : ObjectId("5eb550aae41d233f1058efb0"),
"id" : 1,
"referenceId" : 100000000000000000,
"__v" : 0
}
и увеличить его значение на 1. Но по какой-то причине число у меня сохраненные в db не увеличиваются.
Вот что я сделал:
return new Promise((resolve, reject) => {
// Incrementing the only document in 'referenceIds' collection by 1
ReferenceId.findOneAndUpdate(
{ id: 1 },
{ $inc: { referenceId: 1 } }
).then(res => {
// If no document found, creating new one.(This is a one time activity)
if (!res) {
let referenceIdDoc = new ReferenceId({
id: 1,
referenceId: 100000000000000000
})
referenceIdDoc.save()
.then(res => {
resolve(res.referenceId);
})
.catch(err => {
reject(err);
});
} else {
resolve(res.referenceId);
}
}).catch(err => {
reject(err);
});
});
Но ссылка, которая сохраняется в db, выглядит следующим образом:
{
"_id" : ObjectId("5eb554cb80a31d3670afddcb"),
"id" : 1,
"referenceId" : 1e+17,
"__v" : 0
}
И после увеличения 'referenceId' в приведенном выше фрагменте кода, 'referenceId' остается прежним. т.е. 100000000000000000.
Как я могу сохранять и увеличивать очень большие целые числа, такие как 100000000000000000, в mongodb, используя NodeJs и Mon goose?
Кто-нибудь может мне помочь Вот? Я застрял в этом вопросе несколько часов. Любая помощь будет оценена. Спасибо
ОБНОВЛЕНИЕ:
Я использовал модуль mon goose -long npm для работы с очень большими целыми числами и сделал следующее изменения в моем приложении:
const mongoose = require("mongoose");
require('mongoose-long')(mongoose);
let SchemaTypes = mongoose.Schema.Types;
const ReferenceId = mongoose.Schema({
id: {
type: Number,
required: true
},
referenceId: {
type: SchemaTypes.Long,
required: true
}
})
module.exports = mongoose.model("ReferenceId", ReferenceId);
. Значение увеличивается, как и ожидалось. Как показано ниже:
{
"_id" : ObjectId("5eb55c2d83d44f1f2864ff86"),
"id" : 1,
"referenceId" : NumberLong(100000000000000005),
"__v" : 0
}
Однако в моем приложении NodeJs я не получаю фактическое значение 'referenceId'. Я получаю следующий объект:
{_bsontype: "Long", low_: 1569325061, high_: 23283064}
Кто-нибудь может сказать мне, как я могу получить фактическое значение из db?