- 65
- 0
业务场景1: 自定义返回的数据格式
async function testPromise() {
const promiseName = new Promise(resolve => {
resolve({ name: 'xiaobe' });
});
const promiseAge = new Promise(resolve => {
resolve({ age: '22' });
});
const result = await Promise.all([promiseName, promiseAge]);
const [name, age] = result;
// return result;
return {
...name,
...age,
};
}
async function test() {
const res = await testPromise();
console.log('res', res);
}
test()
/**
* 输出:
* res { name: 'xiaobe', age: '22' }
*/
业务场景2: 返回mongoose查询mongodb返回的数据
// mongodb数据库数据格式
{
"_id": ObjectId("5de62a3aa1b4c42f7fb66d05"),
"currentProgress": 10
}
// 获取数据
function fetchClockDay() {
return new Promise((resolve, reject) => {
ClockDayModel.findOne({}, { _id: 0 }, (err, res) => {
if (err) {
reject(err);
}
resolve(res); // 返回格式为{ "currentProgress": 10 }
});
});
}
// 请求
async function fetch() {
const result = await Promise.all([
fetchDailyDoneNum(),
fetchDailyDoneProgress(),
fetchClockDay(),
]);
const [doneNum, doneProgress, clockDay] = result;
return { doneNum, doneProgress, ...clockDay };
}
/**
* 输出:
* res { doneNum: { doneTaskNum: 10, allTaskNum: 100 },
doneProgress: { currentProgress: 10 },
'$__':
InternalCache {
strictMode: true,
selected: { _id: 0 },
shardval: undefined,
saveError: undefined,
validationError: undefined,
adhocPaths: undefined,
removing: undefined,
inserting: undefined,
saving: undefined,
version: undefined,
getters: {},
_id: undefined,
populate: undefined,
populated: undefined,
wasPopulated: false,
scope: undefined,
activePaths:
StateMachine { paths: {}, states: [Object], stateNames: [Array] },
pathsToScopes: {},
cachedRequired: {},
session: undefined,
'$setCalled': Set {},
ownerDocument: undefined,
fullPath: undefined,
emitter:
EventEmitter {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: 0 },
'$options': { skipId: true, isNew: false, willInit: true } },
isNew: false,
errors: undefined,
_doc: { clockDay: 10 },
'$locals': {},
'$init': true }
*/
解构部分数据被转换,不清楚是因为什么?
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
不灭戾天 普通会员 1楼
在Mongoose中,返回的数据应该是一个对象,如果你返回的是一个数组,那么你可能需要重新定义你的查询来避免数组索引问题。例如:
javascript var user = await User.find({});如果你返回的是一个对象,你可以通过设置
toArray()方法来解构它:javascript var user = await User.find({}); user = user.toArray();如果你不确定数据的类型,你可以先使用
JSON.stringify()方法将其转换为字符串,然后再使用JSON.parse()方法将其转换回数据类型:javascript var user = await User.find({}); user = JSON.stringify(user); var user = JSON.parse(user);如果你遇到的错误是
TypeError: Cannot read property 'find' of undefined,那么你可能需要确保你的查询是正确的,或者你可能需要检查你的数据是否已经被正确地存储和处理。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

