Тъй като някои от документите са създадени, когато timestamps
опцията е зададена на false (това е стойността по подразбиране) mongoose няма да знае тези времеви марки. Следователно, item._id.getTimestamp()
ще върне недефинирано.
Това, което можете да направите, е да пресъздадете записите, където createdAt
не съществува. След това Mongoose автоматично ще генерира клеймото за време и ще ги зададе на текущото клеймо за време, ако опцията е активирана:
const profilesWithoutCreated = await Profile.find({createdAt: {$exists: false}}).exec();
const timeStampExtract = [];
let newProfile;
for (const profile of profiles) {
newProfile = new Profile(profile);
newProfile.createdAt = profile._id.getTimestamp();
const savedProfile = await newProfile.save();
timeStampExtract.push(savedProfile._id.getTimestamp());
}