2015-10-01 26 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

您可以添加一点评论来解释它的功能和工作原理吗?谢谢! –

相关问题