2016-11-19 2 views
0

ich versuche caminteJs auf NodeJS zu verwenden und umzusetzen, habe ich models Ordner und dass ich einige Datenbankschema haben, die alsNodeJS Variablen auf getrennten Dateien mit

in getrennte Datei eingewickelt
user.js //contains user table schema 
news.js //contains news table schema 

in index.js, die ihre in models Ordner ich habe:

var users = require('./user'); 
var news = require('./news'); 

module.exports = { 
    users:users, 
    news:news 
}; 

user.js Dateiinhalt:

var schema = require('../config'); 
module.exports = function(schema){ 
    var users = schema.define('channels', { 
     user_name: { type: schema.String, limit: 30 }, 
     ... 
     created_at: { type: schema.Date }, 
     updated_at: { type: schema.Date } 
    }); 

    return users; 
}; 

config.js Dateiinhalt:

var caminte = require('caminte'), 
    Schema = caminte.Schema, 
    config = { 
     driver: "mysql", 
     host: "localhost", 
     port: "3306", 
     username: "root", 
     password: "", 
     database: "test", 
     pool: true 
    }, 
    schema = new Schema(config.driver, config); 

module.exports = { 
    caminte: caminte, 
    Schema: Schema, 
    config: config, 
    schema: schema 
} 

und dann meine server.js sie zu benutzen:

var socket = require('socket.io'), 
    ... 
    config = require('./config'), 
    models = require('./models'); 

server.listen(port, function() { 
    console.log('Server listening at port %d', port); 
}); 

io.on('connection', function (socket) { 
    socket.on("new_channel", function (data, device) { 
     new models.channels({ channel_name: 'Peter' }); 
     console.log(channel); 
    }); 
}); 

ich diesen Fehler auf user.js:

TypeError: schema.define is not a function 

Antwort

0

Wahrscheinlich sollte es sein:

var users = schema.schema.define('channels', { 

Weil definiert, dass hier:

module.exports = { 
    caminte: caminte, 
    Schema: Schema, 
    config: config, 
    schema: schema // <- this 
} 

So schema in user.js das gleiche Objekt ist, dass Sie in den module.exports definiert.

Sie user.js wie dies umschreiben könnte:

var config = require('../config'); 
module.exports = function(schema){ 
    var users = config.schema.define('channels', { 
     user_name: { type: config.schema.String, limit: 30 }, 
     ... 
     created_at: { type: config.schema.Date }, 
     updated_at: { type: config.schema.Date } 
    }); 

    return users; 
}; 
+0

Dank, Problem gelöst –

Verwandte Themen