Я работаю над своим первым проектом koajs и после того, как понял (или пытался) генераторные функции, урожай, громы и т. Д. Я столкнулся с проблемой мангуста (на которую я сильно полагаюсь). После поиска на форумах, решение было thunkify:KoaJS with Thunkify + Mongoose
CoffeeScript:
Controller = require './basecontroller'
User = require '../models/user'
UserController = ((c, User) ->
return (
get: (next) ->
userQuery = c.libs.thunkify User.find
try
users = yield userQuery {}
@body = users
return
catch e
console.error "Error: #{e}"
throw e
return
next()
)
) Controller, User
# Export functionality
module.exports = UserController
JavaScript:
// Generated by CoffeeScript 1.8.0
var Controller, User, UserController;
Controller = require('./basecontroller');
User = require('../models/user');
UserController = (function(c, User) {
return {
get: function*(next) {
var e, userQuery, users;
userQuery = c.libs.thunkify(User.find);
try {
users = (yield userQuery({}));
this.body = users;
return;
} catch (_error) {
e = _error;
console.error("Error: " + e);
throw e;
return;
}
return next();
}
};
})(Controller, User);
module.exports = UserController;
, который имеет смысл в моей голове ... но я получаю эта ошибка:
14:56:01 web.1 | Error: TypeError: Cannot read property 'discriminatorMapping' of undefined
14:56:01 web.1 | TypeError: Cannot read property 'discriminatorMapping' of undefined
14:56:01 web.1 | at find (/Users/mial/Projekte/MiPa/schuppen4-on-heroku/node_modules/mongoose/lib/model.js:940:18)
14:56:01 web.1 | at Object.<anonymous> (/Users/mial/Projekte/MiPa/schuppen4-on-heroku/node_modules/thunkify/index.js:43:12)
14:56:01 web.1 | at next (/Users/mial/Projekte/MiPa/schuppen4-on-heroku/node_modules/koa/node_modules/co/index.js:90:21)
14:56:01 web.1 | at Object.<anonymous> (/Users/mial/Projekte/MiPa/schuppen4-on-heroku/node_modules/koa/node_modules/co/index.js:45:5)
14:56:01 web.1 | at Server.<anonymous> (/Users/mial/Projekte/MiPa/schuppen4-on-heroku/node_modules/koa/lib/application.js:125:8)
14:56:01 web.1 | at Server.emit (events.js:110:17)
14:56:01 web.1 | at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:491:12)
14:56:01 web.1 | at HTTPParser.parserOnHeadersComplete (_http_common.js:111:23)
14:56:01 web.1 | at Socket.socketOnData (_http_server.js:343:22)
14:56:01 web.1 | at Socket.emit (events.js:107:17)
... umm. Помогите? :)
Небольшая коррекция: [ '.exec()' возвращает обещание] (HTTP : //mongoosejs.com/docs/api.html#query_Query-exec), с которым также работает 'co'. Рад, что у вас это работает, хотя :) – jmar777
Awesome - приблизиться к пониманию всей магии генератора: D Спасибо @ jmar777! – Michel