2013-03-22 51 views
6

我是node.js express.js的初學者。 (今天早上開始:-))我已經包含了db.js,它有我的連接細節給mongolab和User.js,這是我的模型。請找到下面的代碼。運行節點應用時未捕獲,未指定'錯誤'

Db.js

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

module.exports.mongoose = mongoose; 
module.exports.Schema = Schema; 

// Connect to cloud database 
var username = "Ausername" 
var password = "Apassword"; 
var address = 'Aaddress'; 
connect(); 

// Connect to mongo 
function connect() { 
    var url = 'mongodb://' + username + ':' + password + address; 
    mongoose.connect(url); 
} 
function disconnect() {mongoose.disconnect()} 

user.js的

var db = require('../lib/db'); 

var UserSchema = new db.Schema({ 
    username : {type: String, unique: true} 
    , password : String 
}) 

var MyUser = db.mongoose.model('User', UserSchema); 

// Exports 
module.exports.addUser = addUser; 

// Add user to database 
function addUser(username, password, callback) { 
    var instance = new MyUser(); 
    instance.username = username; 
    instance.password = password; 
    instance.save(function (err) { 
    if (err) { 
     callback(err); 
    } 
    else { 
     callback(null, instance); 
    } 
    }); 
} 

當我運行節點的應用程序,它報告下面的錯誤

C:\Sripaul\Softwares\NodeJS\Projects\authentication>node app 
Express server listening on port 3000 

C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:413 
     throw err; 
     ^
Error: Uncaught, unspecified 'error' event. 
    at NativeConnection.EventEmitter.emit (events.js:68:15) 
    at Model.init (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\model.js:554:31) 
    at exports.tick (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\lib\utils.js:408:16) 
    at Db.ensureIndex (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1066:28) 
    at Db.indexInformation (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\db.js:1200:28) 
    at Cursor.toArray (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:124:30) 
    at Cursor.each (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:166:32) 
    at Cursor.nextObject.self.queryRun (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:39) 
    at Cursor.close (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:687:5) 
    at Cursor.nextObject.commandHandler (C:\Sripaul\Softwares\NodeJS\Projects\authentication\node_modules\mongoose\node_modules\mongodb\lib\mongodb\cursor.js:441:21) 

代碼在app.js是如下

app.post('/signup', function(req, res) { 
    var username = req.body.username; 
    var password = req.body.password; 
    User.addUser(username, password, function(err, user) { 
    if (err) throw err; 
    res.redirect('/form'); 
    }); 
}); 

有人能幫我解決嗎?

+0

一些代碼丟失,請問你給函數ADDUSER回調是什麼樣子?另外,也許你不應該在這裏輸入你的用戶名和密碼。 – 2013-03-22 09:29:10

+0

你好我編輯你的用戶名/密碼和地址 - 不是一個好主意,張貼這種事情,除非你想有人訪問你的mongo雲數據庫? – 2013-03-22 09:52:51

+0

謝謝豐富。我確實想刪除我編輯後的用戶名和密碼,但忘記了:-( – Sripaul 2013-03-22 12:15:12

回答

2

看起來像mongo實驗室這個問題發生,因爲它無法連接到亞馬遜雲。我試過Joyent Cloud,它運行良好。

2

面對類似問題上的錯誤信息是一樣的,但是堆棧跟蹤不同,

/%/node_modules/mongoose/lib/utils.js:413 
     throw err; 
      ^
TypeError: Uncaught, unspecified "error" event. 
    at TypeError (<anonymous>) 
    at NativeConnection.EventEmitter.emit (events.js:74:15) 
    at /%/authentication/node_modules/mongoose/lib/model.js:554:31 
    at /%/authentication/node_modules/mongoose/lib/utils.js:408:16 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1066:28 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1200:28 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:124:30 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:166:32 
    at /%/authentication/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:441:39 

固定它可以在db.js地址變量之前,除去多餘的空間(如書)。

var address = ' @dbh42.mongolab.com:27427/nockmarket'; 

應該是(介意的空間)

var address = '@dbh42.mongolab.com:27427/nockmarket'; 
0

我也有這個問題,首先使用mongolab。即使你有一個mongolab用戶,你也必須在用戶標籤下創建一個數據庫用戶

-1

好的,我認爲它更多的是一個最新版本的問題,根據網站,最新版本是第3版。我猜想現在所有FREE計劃都支持此版本,舊版本不再受支持。

爲了解決這個問題,安裝新的驅動程序:在你的工作授權目錄,運行以下命令:

$ npm install mongoose 

$ node app一切重新啓動您的應用程序後,應罰款。

相關問題