Javascript 从mongoose查询创建对象
如何从查询结果生成对象?在数据库中,表的功能是查询数据库。如果查询是异步的,我怎么做Javascript 从mongoose查询创建对象,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,如何从查询结果生成对象?在数据库中,表的功能是查询数据库。如果查询是异步的,我怎么做 const returnResultOfQuery=()=>{ Dinner1300.count().exec(函数(err,count){ const random=Math.floor(Math.random()*计数) Dinner1300.findOne().skip(random).exec( 函数(错误、结果){ console.log(结果) }) })实现这一点的方法之一是首先使用Promis
const returnResultOfQuery=()=>{
Dinner1300.count().exec(函数(err,count){
const random=Math.floor(Math.random()*计数)
Dinner1300.findOne().skip(random).exec(
函数(错误、结果){
console.log(结果)
})
})
实现这一点的方法之一是首先使用Promise.all执行所有查询,得到结果后,创建新对象。类似于:
const week = [
{ id : 1, day : 1 },
{ id : 2, day : 2 },
{ id : 3, day : 3 },
{ id : 4, day : 4 },
{ id : 5, day : 5 },
{ id : 6, day : 6 },
{ id : 7, day : 7 }
];
const returnResultOfQuery = () => {
return Dinner1300.count ().exec ( function ( err, count ) {
const random = Math.floor ( Math.random () * count );
return Dinner1300.findOne ().skip ( random ).exec (
function ( err, result ) {
console.log ( result );
return result;
} );
} );
};
let promises = [];
for ( let x in week ) {
promises.push ( returnResultOfQuery () );
promises.push ( returnResultOfQuery () );
promises.push ( returnResultOfQuery () );
}
let diet = [];
Promise.all ( promises ).then ( function ( result ) {
let i = 0;
for ( let x in week ) {
diet.push (
{
id : x.id,
day : x.day,
meals : [
result[ i ],
result[ i + 1 ],
result[ i + 2 ]
]
}
);
i = i + 3;
}
} );
console.log ( diet );
p.S:我还没有测试上面的代码。您可以使用代码,它只是一个包装器
const returnResultOfQuery = () => {
return new Promise((resolve, reject) => {
Dinner1300.count().exec(function (err, count) {
const random = Math.floor(Math.random() * count)
Dinner1300.findOne().skip(random).exec(
function (err, result) {
if (err) {
return reject(err);
}
return resolve(result);
});
});
});
}
const week = [
{id: 1, day: 1},
{id: 2, day: 2},
{id: 3, day: 3},
{id: 4, day: 4},
{id: 5, day: 5},
{id: 6, day: 6},
{id: 7, day: 7},
]
const diet = Promise.all(week
.map(value => ({
id: value.id,
day: value.day,
meals: [
returnResultOfQuery(),
returnResultOfQuery(),
returnResultOfQuery()
]
}))
);
console.log(diet)
看起来您的示例不起作用。另外,您是否可以更新您的问题以包含Mongo查询的代码?此时无法回答您的问题,因为我们不知道您的查询是什么样子的我添加了查询示例