Я вношу в список 2 элемента из одной схемы и хочу обновить в другой схеме. для этого я использовал метод среза, чтобы составить список первых двух элементов из массива. но получаю
CoreMongooseArray ['элемент1','элемент2']
вместо ["элемент1", "элемент2"]
Как удалить «CoreMongooseArray»?
connection.connectedusers.find({}, async (err, docs) => {
if (err) throw err;
var users = docs[0].connectArray;
if (docs[0] != null && users.length >= 2) {
var shortListed = users.slice(0, 2);
try {
await connection.chatschema.updateMany({}, { $push: { usersConnected: [shortListed] } }, { upsert: true });
} catch (err) {
res.status(201).json(err);
}
}
Вам нужно добавить lean()
к вашему запросу.
Из документы:
Documents returned from queries with the lean option enabled are plain javascript objects, not Mongoose Documents. They have no save method, getters/setters, virtuals, or other Mongoose features.
Если у вас уже есть массив мангуста и вы хотите преобразовать его в простой массив js
const jsArray = mongooseArray.toObject();
https://mongoosejs.com/docs/api/array.html#mongoosearray_MongooseArray-toObject
У меня почему-то .toObject()
не сработало. lean()
вариант работает, но он не подходит, когда у вас уже есть объект с массивом мангустов. Итак, если у вас уже есть массив мангуста и вы хотите просто преобразовать его в простой массив js, вы можете использовать следующий код:
function mongooseArrayToArray(mongooseArray) {
const array = [];
for (let i = 0; i < mongooseArray.length; i += 1) {
array.push(mongooseArray[0]);
}
return array;
};
Применение:
const array = mongooseArrayToArray(mongooseArray);
Если вы просто хотите преобразовать CoreMongooseArray в обычный массив, ничего не меняя:
const jsArray = [...mongooseArray];