我尝试使用es6
yield
功能对 mongodb 进行同步查询,当我在我的测试中调用我的功能时,这显然是不起作用。
我的功能代码如下:
'use strict';
let Notifications, lodash;
lodash = require('lodash')
Notifications = require('../../api/notifications/notifications.model');
function *syncQuery (email, kind, notificationIds) {
let ids, query, remains;
query = {
userEmail: email,
'notifications.kind' : kind
};
return yield Notifications.findOne(query, {}, {lean: true}, (err, usr) => {
let toNotify;
if (err) {
console.log('Error:', err);
reject(err);
}
toNotify = lodash.difference(notificationIds, usr.notifications.id);
return toNotify;
});
}
module.exports = syncQuery;
,我的模块规格为:
it('should be synchronous', done => {
let remains = syncQuery(n.user, 'budget', [9, 71, 24, 90, 5]);
console.log(remains);
remains.next();
console.log('we'r here(?)');
console.log(remains);
done();
})
当我运行我的测试时,输出如下:
{}
we'r here(?)
{}
与JS + ES6相关的人可以帮助我。我的最后一种方法是回复我的功能承诺,但它没有帮助我履行职责,我真的需要同步完成这项工作
PS:可能是我的语法不是最好的(也许我没有使用ES6的最佳实践),也不是我的英语水平(可能是一些错字)。所以,甚至感谢阅读本文