2015-10-01 28 views
-1

我想排序我的json的屬性。我讀了一些關於使用lodash模塊進行排序的方法。當我試圖按照這個價格,這是我的JSON的屬性之一進行排序,我收到此錯誤:ReferenceError:在使用lodash對node.js中的json屬性進行排序時未定義_

server.js

var express= require('express'); 
var bodyParser= require('body-parser'); 
var morgan = require('morgan'); 
var config=require('./config'); 
var app= express(); 
var mongoose=require('mongoose'); 
var lodash= require('lodash'); 
var underscore= require('underscore'); 
//var User=require('./database/user') 
mongoose.connect('mongodb://localhost:27017/db',function(err){ 
    if(err){ 
     console.log(err); 
    } 
    else{ 
     console.log("connected!"); 
    } 
}); 
//res.json({message:"  " }) 

app.use(bodyParser.urlencoded({extended: true })); //if false then parse only strings 
app.use(bodyParser.json()); 
app.use(morgan('dev'));//log all the requests to the console 
var api=require('./app/routes/api')(app,express,underscore); 
app.use('/api',api); 
app.get('*',function(req,res){ 
    res.sendFile(__dirname + '/public/views/index.html'); 
}); // * means any route 

app.listen(config.port,function(err){ 
    if(err){ 
     console.log(err); 
    } 
    else{ 
     console.log("The server is running"); 
    } 
}); 
//module.exports = router; 

api.js

var User= require('../models/user'); 
var Event=require('../models/event'); 
var config=require('../../config') 

var secret=config.secretKey; 

module.exports=function(app,express,underscore) { 
    var api = express.Router(); 
    // app.use() 

    api.post('/signup', function (req, res) { 
     var user = new User({ 
      name: req.body.name, 
      username: req.body.username, 
      password: req.body.password 
     }); 
     user.save(function (err) { 
      if (err) { 
       res.send(err); 
       return; 
      } 
      res.json({ 
       message: 'User created!' 
      }); 
     }); 

    }); 
    api.get('/users', function (req, res) { 
     User.find({}, function (err, users) { 
      if (err) { 
       res.send(err); 
       return; 
      } 
      res.json(users); 
     }); 
    }); 

    api.post('/eventfeed', function (req, res) { 
     var event = new Event({ 
      name: req.body.name, 
      location: req.body.location, 
      description: req.body.description, 
      price: req.body.price, 
      rating: req.body.rating 
     }); 

     event.save(function (err) { 
      if (err) { 
       res.send(err); 
       return; 
      } 
      res.json({ 
       message: 'Event created!' 
      }); 
     }); 
    }); 
    api.get('/sortby_price',function(){ 
     var sorted = _.sortBy(Event, "price") 
    }); 
    return api; 
} 

錯誤

ReferenceError: _ is not defined 
     at c:\Users\MY LAPY\WebstormProjects\Main\app\routes\api.js:62:22 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\route.js:131:13) 
     at Route.dispatch (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\route.js:112:3) 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:277:22 
     at Function.process_params (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:330:12) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:271:10) 
     at Function.handle (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:176:3) 
     at router (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:46:12) 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at trim_prefix (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:312:13) 
     at c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:280:7 
     at Function.process_params (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:330:12) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:271:10) 
     at logger (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\morgan\index.js:144:5) 
    GET /api/sortby_price 500 12.021 ms - 1943 
    GET /api/sortby_price 500 5.623 ms - 1943 
    ReferenceError: _ is not defined 
     at c:\Users\MY LAPY\WebstormProjects\Main\app\routes\api.js:62:22 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\route.js:131:13) 
     at Route.dispatch (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\route.js:112:3) 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:277:22 
     at Function.process_params (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:330:12) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:271:10) 
     at Function.handle (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:176:3) 
     at router (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:46:12) 
     at Layer.handle [as handle_request] (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\layer.js:95:5) 
     at trim_prefix (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:312:13) 
     at c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:280:7 
     at Function.process_params (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:330:12) 
     at next (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\express\lib\router\index.js:271:10) 
     at logger (c:\Users\MY LAPY\WebstormProjects\Main\node_modules\morgan\index.js:144:5) 
+0

'underscore'是不一樣的東西'_' –

+0

我改變了這一切。現在沒有錯誤,但當我進入頁面時,它不斷刷新。這是什麼原因? – Nkav

+0

聽起來像是一個新問題。不太可能由您提供的代碼引起。 –

回答

0

改變聲明:

var underscore= require('underscore');

要:

var _ = require('underscore');

+0

我改變了這一點。現在沒有錯誤,但當我進入頁面時,它不斷刷新。這是什麼原因? – Nkav

+0

可能是一個新問題,如@Kevin B所說,不太可能是由您提供的代碼引起的。 –

0
npm i underscore --save 

var _ = require('underscore'); 
+2

您可以添加一點評論來解釋它的功能和工作原理嗎?謝謝! –

相關問題