CoreMongooseArray 到普通数组
CoreMongooseArray to Normal Array
我正在从一个模式中筛选出 2 个元素,并希望在另一个模式中进行更新。为此,我使用 slice 方法将数组中的前 2 个元素列入候选名单。但正在
CoreMongooseArray ['element1','element2']
而不是 ["element1"、"element2"]
如何删除 "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()
。
来自docs:
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.
如果你已经有了 mongoose 数组并且想转换成简单的 js 数组
const jsArray = mongooseArray.toObject();
https://mongoosejs.com/docs/api/array.html#mongoosearray_MongooseArray-toObject
出于某种原因 .toObject()
对我不起作用。 lean()
选项有效,但当您已经有一个包含 mongoose 数组的对象时,它不适合。因此,如果您已经拥有 mongoose 数组并且只想将其转换为纯 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];
我正在从一个模式中筛选出 2 个元素,并希望在另一个模式中进行更新。为此,我使用 slice 方法将数组中的前 2 个元素列入候选名单。但正在
CoreMongooseArray ['element1','element2']
而不是 ["element1"、"element2"]
如何删除 "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()
。
来自docs:
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.
如果你已经有了 mongoose 数组并且想转换成简单的 js 数组
const jsArray = mongooseArray.toObject();
https://mongoosejs.com/docs/api/array.html#mongoosearray_MongooseArray-toObject
出于某种原因 .toObject()
对我不起作用。 lean()
选项有效,但当您已经有一个包含 mongoose 数组的对象时,它不适合。因此,如果您已经拥有 mongoose 数组并且只想将其转换为纯 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];