2016-12-23 6 views
2

Ich bin auch konfrontiert .Save() ist kein Funktionsfehler, aber ich habe durch die meisten der ähnlichen SO Fragen gegangen und versuchte ihre jeweiligen Antworten, aber zu eitel. Aber über mein Terminal kann ich die Sammlung erstellen und speichern. Auch .find() arbeitet auch. Unten ist mein Code:NodeJS - .save() ist keine Funktion. Kann nicht erstellen Sammlung über Mungo

Modell -> clientUser.js

var mongoose = require('mongoose'); 

var ClientUser = new mongoose.Schema({ 

    firebaseUID :{type: String}, 
    userName : { type : String}, 
    displayName : { type : String} 

}); 
ClientUser.index({firebaseUID: 1}, {unique: true}); 
module.exports = { 
    ClientUser : ClientUser 
}; 

dependency.js

'use strict'; 
var mongoose = require('mongoose'); 
var ClientUser = mongoose.model('ClientUser'); 
var getNewClientUserModel = function() { 
    return mongoose.model('ClientUser'); 
}; 
module.exports = { 
     getNewClientUserModel : getNewClientUserModel 
}; 

clientUser -> add.js

'use strict'; 
var dependency = require('./../../dependency'); 
var _ = dependency.getLodash(); 

var add = function (request, response) { 
    var firebaseUID = request.body.firebaseUID; 
    var userName = request.body.userName; 
    var displayName = request.body.displayName; 
    var newClientUser= dependency.getNewClientUserModel(); 
    newClientUser.firebaseUID = firebaseUID; 
    newClientUser.userName = userName; 
    newClientUser.displayName = displayName; 

    if (!firebaseUID || !userName) { 
     response.send(400); 
     return null; 
    } else { 
     newClientUser.save(function (error,doc) { 
      if (!_.isEmpty(error)) { 
       response.send(500, {'message': 'Error in adding the Category', error: error}); 
      } else { 
       response.send(200); 
      } 
      return null; 
     }); 
    } 
}; 

module.exports = { 
    add: add 
}; 

app.js

var mongoose = require('mongoose'); 
mongoose.model('ClientUser', require('./models/clientUser').ClientUser); 
/* 
*Routes importing 
*/ 
var ClientUser = { 
    'add' : require('./routes/clientuser/add').add 
}; 
+0

können Sie bitte "Abhängigkeit" log? Weil es scheint, als wäre der Abhängigkeitspfad nicht korrekt. Sonst scheint Code in Ordnung zu sein. – jimish

Antwort

0

Du hast ne ed wandeln das Schema in ein Modell Sie, in Ihre clientUser.js arbeiten können es passieren so zu mongoose.model (Modellname, Schema):

module.exports = mongoose.model('ClientUser', ClientUser); 
0

Ihr Problem in /models/clientUser.js ist, exportieren Sie das Schema. Mein Vorschlag ist, ein Modell dieses Moduls zu exportieren. Auch ich verstehe den Vorschlag von dependency.js nicht, warum nicht das Modell direkt in Ihrem Add-Handler verwenden? Unten ist ein Vorschlag, der funktionieren sollte.

models/clientUser.js

var mongoose = require('mongoose'); 

var clientUserSchema = new mongoose.Schema({ 
    firebaseUID :{type: String}, 
    userName : { type : String}, 
    displayName : { type : String} 
}); 
clientUserSchema.index({firebaseUID: 1}, {unique: true}); 
var ClientUser = mongoose.model('ClientUser', clientUserSchema); 
module.exports = { 
    ClientUser : ClientUser 
}; 

Routen/clientuser/add.js

'use strict'; 
var ClientUser = require('./clientUser').ClientUser; 

var add = function (request, response) { 
    var firebaseUID = request.body.firebaseUID; 
    var userName = request.body.userName; 
    var displayName = request.body.displayName; 
    var newClientUser = new ClientUser({ 
     firebaseUID: firebaseUID, 
     userName: userName, 
     displayName: displayName 
    }); 

    if (!firebaseUID || !userName) { 
     return response.send(400); 
     } 
     newClientUser.save(function (error, doc) { 
     if (error) { 
      return response.send(500, { 'message': 'Error in adding the Category', error: error }); 
      } 
      return response.sendStatus(200); 
     }); 

    }; 

module.exports = { 
    add: add 
}; 

app.js

/* 
*Routes importing 
*/ 
var ClientUser = { 
    'add' : require('./routes/clientuser/add').add 
}; 
Verwandte Themen