0
Я пытаюсь создать обратный вызов для функции mongoose object.save, но я получаю response.sent undefined. Я немного новичок в nodejs. если кто-нибудь может направить меня, я буду очень благодарен.Как создать обратный вызов для mongoose
DataCallback.js
function DataCallback(req, res, next, model) {
this.request = req;
this.response = res;
this.next = next;
this.model = model;
console.log(model+"-----------------------");
var res = {status: 200};
this.response.send(res);
}
DataCallback.prototype.insert = function (err, data) {
if (err || data == undefined || data == null) {
console.log(err);
var res = {status: 1000, error: "unable to create " + this.model};
this.response.send(res);
}
else {
var res = {status: 200, record: data};
this.response.send(res);
}
this.next();
}
module.exports = DataCallbac
Controller.js
var express=require('express');
var Router=express.Router();
var Group=require('../Model/Group');
var ObjectId=require("mongoose").ObjectId;
var dataCallbacks=require('../Utils/DataCallbacks');
Router.post("/",function(req,res,next){
var group=new Group(req.body);
group.save(new dataCallbacks(req,res,next,"Group").insert);
});
Ошибка
if (this.ended && !this.hasRejectListeners()) throw reason;
^
TypeError: Cannot call method 'send' of undefined
at EventEmitter.DataCallback.insert (/media/qasim/827E73097E72F4EF/node-test/primzel-api/Utils/DataCallbacks.js:23:23)
at EventEmitter.<anonymous> (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:175:45)
at EventEmitter.emit (events.js:98:17)
at Promise.safeEmit (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:81:21)
at Promise.fulfill (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:94:24)
at Promise.resolve (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/lib/promise.js:113:23)
at model.<anonymous> (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/lib/document.js:1569:39)
at next_ (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/hooks-fixed/hooks.js:89:34)
at EventEmitter.fnWrapper (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/hooks-fixed/hooks.js:171:15)
at EventEmitter.<anonymous> (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:175:45)
at EventEmitter.emit (events.js:98:17)
at Promise.safeEmit (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:81:21)
at Promise.fulfill (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:94:24)
at p1.then.then.self.isNew (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/lib/model.js:254:27)
at newTickHandler (/media/qasim/827E73097E72F4EF/node-test/primzel-api/node_modules/mongoose/node_modules/mpromise/lib/promise.js:229:18)
at process._tickCallback (node.js:448:13)
Последняя строка 'module.exports = DataCallbac'. Является ли эта опечатка непреднамеренной на SO, или это опечатка в вашем фактическом коде? –
Кроме того, 'var dataCallbacks = require ('../ Utils/DataCallbacks');', имя модуля - 'DataCallback'. Это еще одна опечатка? –
Большое вам спасибо за ваше время, я получил свою проблему, я использовал функцию вставки как внешний вызов –