这确实是很奇怪的情况,但是我的Model.find()
方法不返回数组,而是返回对象,而不是对象数组,而只是对象。我记录了结果是否为Array类型并且显示为false,之前我曾遇到过此类问题,而Aggregation方法可以解决问题,但现在不是。
这是我的代码:
let docs = await Docs.find({public: true}).limit(5);
const docsToSend = docs.filter(doc => new Date(doc.expires) < new Date().getTime());
console.log(typeof docsToSend === Array)
return res.status(200).send({
docs: docsToSend
})
但是我记录文档在客户端是否为数组类型,并且还返回false。我真的很困惑。什么问题?
答案 0 :(得分:0)
这是因为数组的类型是对象,而不是数组
let arr = [];
let arr2 = [{ a: 1 }, { b: 2 }];
console.log(typeof arr); //object
console.log(typeof arr2); //object
尝试:
console.log(typeof docsToSend === "object");
let docs = [{field1: true, field2: false}, {field1: false, field2: false}];
const docsToSend = docs.filter((doc)=> doc.field1);
console.log(typeof docsToSend); //object