- 浏览: 5184340 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
这些天有点儿空闲,学习了一下node.js。先把《Node.js开发指南》书中的博客例子调通了,费了挺大的劲儿,因为好多插件出了新的版本,而新版本中有的函数、方法又失效了。
自已又练习着做了一个例子,个人记账系统。主要是想在手机上用,所以界面做得很简单。
解决了以下一些问题:express使用、bootstrap排版布局、mongodb模糊查询、mongodb统计(group/mapReduce)、session处理、req.flash方法使用等、路由设置等。花了不少的心思。
例子中用到的插件的版本:
connect-flash@0.1.1
connect-mongo@0.4.0
ejs@0.8.5
express@3.4.8
mongodb@1.3.23
Bootstrap V3.0.3
贴几张系统运行的图片,有图有真相嘛。
核心代码贴一下:
一、app.js
二、路由处理(routes\index.js)
三、消费数据处理(modules\consume.js)
全部源码见附件。
另,2014-04-02
系统开发好了之后,找了个服务器部署了一下,老婆用得不错,原来不太喜欢记账,现在记账很积极。我就又把系统完善了一下,增加了翻页、权限控制功能,将几个按钮修改成图标,布局更紧凑了一些,使用全局变量保存系统名称,方便修改。
骚年,我运行是对的。看看是不是插件版本的问题。
附件中是代码就是完整的代码,不能正常运行可能跟Node.js、以及使用插件的版本有关。
后面是较新版本的软件,后来简单修改了一下。第一个文件是最初的版本。
上传了附件,你自己下载吧,不发邮件了。
h5的代码什么意思?
留个邮箱,可以给你全部代码。
自已又练习着做了一个例子,个人记账系统。主要是想在手机上用,所以界面做得很简单。
解决了以下一些问题:express使用、bootstrap排版布局、mongodb模糊查询、mongodb统计(group/mapReduce)、session处理、req.flash方法使用等、路由设置等。花了不少的心思。
例子中用到的插件的版本:
connect-flash@0.1.1
connect-mongo@0.4.0
ejs@0.8.5
express@3.4.8
mongodb@1.3.23
Bootstrap V3.0.3
贴几张系统运行的图片,有图有真相嘛。
![](http://dl2.iteye.com/upload/attachment/0095/3450/c25f4cc1-72ce-3817-8cb2-f4c0840617c8.jpg)
![](http://dl2.iteye.com/upload/attachment/0095/3452/4d961264-79ba-3d88-ba01-a1802d37e9cd.jpg)
![](http://dl2.iteye.com/upload/attachment/0095/3454/357e0f06-a8e1-38a5-b49f-3b18b62cc2d8.jpg)
![](http://dl2.iteye.com/upload/attachment/0095/3456/1ea579e6-c2c0-370f-9d83-4dfe04ba28ec.jpg)
![](http://dl2.iteye.com/upload/attachment/0095/3458/a1a6087f-76e7-3349-9b64-865f58c4c204.jpg)
核心代码贴一下:
一、app.js
/** * Module dependencies. */ var express = require('express'); var http = require('http'); var path = require('path'); var util=require('util'); var routes = require('./routes'); //var User = require('./modules/user.js'); var settings=require('./Settings'); var MongoStore = require('connect-mongo')(express); var flash = require('connect-flash'); var app = express(); //app.set('appTitle','老王个人记账系统'); app.locals.gAppTitle = settings.appName; //这个没有使用 app.locals.gPageSize = settings.pageSize; // all environments app.set('port', process.env.PORT || 8484); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.bodyParser()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(flash()); app.use(express.session({ "secret":settings.cookieSecret, "store":new MongoStore({ db:settings.db }) })); app.use(function(req, res, next){ //跟踪; //console.log("req.method="+req.method); //console.log("req.url="+req.url); //console.log("req.originalUrl="+req.originalUrl); var url = req.originalUrl; //简单地定义一个登录拦截器 if ((url == "/month" || url=="/stat" || url=='/list' || url=='/record') && !req.session.user) { console.log("登录拦截器提示:必须登录,才能执行此项操作。"); req.flash('error', '请先登录。'); return res.redirect("/login"); } res.locals.user = req.session.user; var error = req.flash('error'); res.locals.error = error.length?error:null; //console.log("转移flash中的error值:"+error); var success = req.flash('success'); res.locals.success = success.length?success:null; //console.log("转移flash中的success值:"+success); res.locals.session = req.session; next(); }); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); //console.log(util.inspect(app)); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } //console.log('注册路由.'); routes(app); http.createServer(app).listen(app.get('port'), function(){ console.log(); console.log(); console.log('/**************************************************/'); console.log('/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */'); console.log('/* 欢迎访问我的博客:http://wallimn.iteye.com */'); console.log('/**************************************************/'); console.log('============服务启动成功,监听端口:' + app.get('port')+"============"); });
二、路由处理(routes\index.js)
var crypto = require('crypto'); var User = require('../modules/user.js'); var Consume = require('../modules/consume.js'); /* * GET home page. */ module.exports = function(app) { app.get('/',function(req, res){ res.render('index', { title: '首页' }); /* res.render('login',{ title:'用户登录', }); */ //res.redirect('/login'); }); app.get('/record',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', '用户未登录,请登录。'); return res.redirect('/login'); } Consume.get(user.name,{limit:16}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('record', { title: user.name, consumes: records, }); }); }); //预处理,如果通过,再进行下一个。 app.post('/record',checkLogin); app.post('/record', function(req, res) { var currentUser = req.session.user; var record = new Consume(); record.loadFromReq(currentUser.name, req.body); record.save(function(err) { if (err) { req.flash('error', err); return res.redirect('/'); } req.flash('success', '发表成功'); res.redirect('/record'); }); }); //这个应该去掉。留在这里当个后门吧 //可以查看其他用户的数据 app.get('/u/:user', function(req, res) { var username = req.params.user; if (!username) { req.flash('error', '未指定用户'); return res.redirect('/error'); } Consume.get(username,{limit:0}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } console.log(records); res.render('list', { title: username, consumes: records, }); }); }); app.get('/del/:id', function(req, res) { var id = req.params.id; if (!id) { req.flash('error', '未指定要删除的记录ID'); return res.redirect('/error'); } console.log("准备删除记账记录,_id="+id); Consume.del(id, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.redirect('/record');; }); }); app.get('/logout',function(req,res){ req.session.user = null; req.flash('success','登出成功'); res.redirect('/login'); }); app.get('/list',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', "您没有登录,请登录。"); console.log("没有登录,重定向的登录界面。"); return res.redirect('/login'); } Consume.get(user.name,{limit:0}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('list', { title: user.name, consumes: records, }); }); }); app.post('/search',function(req,res){ var user = req.session.user; if(!user){ req.flash('error', "您没有登录,请登录。"); return res.redirect('/login'); } var keyword = req.body.keyword; console.log("搜索关键字:"+keyword); Consume.get(user.name,{limit:0,keyword:keyword}, function(err, records) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('record', { title: user.name, consumes: records, }); }); }); app.get('/stat',function(req,res){ var user = req.session.user; Consume.stat(user.name, function(err, results) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('stat', { title: user.name, results: results, }); }); }); app.get('/month',function(req,res){ var user = req.session.user; Consume.month(user.name, function(err, results) { if (err) { req.flash('error', err); return res.redirect('/error'); } res.render('stat', { title: user.name, results: results, }); }); }); app.get('/error',function(req,res){ res.render('error'); }); //处理用户登录。 app.post('/login',function(req,res){ var md5=crypto.createHash('md5'); var password = md5.update(req.body.password).digest('hex'); User.get(req.body.username,function(err,user){ if(!user){ req.flash('error','用户不存在'); return res.redirect('/login'); } if(user.password!=password){ req.flash('error','用户口令错误'); return res.redirect('/login'); } req.session.user = user; req.flash('success','登入成功'); //res.redirect('/'); res.redirect('/record'); }); }); app.get('/login',function(req,res){ res.render('login',{ title:'用户登录', }); }); app.get('/reg',function(req,res){ res.render('reg',{ title:'用户注册' }); }); app.post('/reg',function(req,res){ if(req.body['password-repeat']!=req.body['password']){ req.flash('error','两次输入的口令不一致!'); return res.redirect('/reg'); } var md5=crypto.createHash('md5'); var password = md5.update(req.body.password).digest('hex'); var newUser = new User({ name:req.body.username, password:password, }); User.get(newUser.name,function(err,user){ if(user) err='同名用户已经存在,请更换名字.'; if(err){ req.flash('error',err); return res.redirect('/reg'); } newUser.save(function(err){ if(err){ req.error=err; return res.redirect('/reg'); } req.session.user = newUser; req.flash('success','注册成功!'); res.redirect('/record'); }); }); }); //测试函数 app.get('/hello',function(req,res){ res.send('The time is '+new Date().toString()); }); //测试函数 app.get('/sayhello',function(req,res){ res.send('hello '+req.params.username); }); }; //检查是否登入. function checkLogin(req, res, next) { if (!req.session.user) { req.flash('error', '尚未登录,无法操作。'); return res.redirect('/error'); } next(); } function checkNotLogin(req, res, next) { if (req.session.user) { req.flash('error', '已登入'); return res.redirect('/'); } next(); }
三、消费数据处理(modules\consume.js)
var mongodb = require('./db'); var BSON = require('mongodb').BSONPure; var util=require('util'); function toObjectId(id){ console.log("转换值:"+id); if( id=="" || id=="null" || id=="undefined" || id==undefined || id==null)return null; return BSON.ObjectID.createFromHexString(id); } function Consume(username, consumeDate,consumeSubject,consumeAmount,consumeRemark, time) { //加载时要单独赋值 this._id=null; this.userName = username; this.consumeDate = consumeDate; this.consumeSubject = consumeSubject; this.consumeAmount = consumeAmount; this.consumeRemark = consumeRemark; if (time) { this.time = time; } else { this.time = new Date(); } }; module.exports = Consume; Consume.prototype.loadFromReq = function loadFromReq(username,reqBody,time){ //自动进行了ID类型的转换。 this._id = toObjectId(reqBody._id); this.userName = username; this.consumeDate = reqBody.consumeDate; this.consumeSubject = reqBody.consumeSubject; this.consumeAmount = reqBody.consumeAmount; this.consumeRemark = reqBody.consumeRemark; if (time) { this.time = time; } else { this.time = new Date(); } } Consume.prototype.save = function save(callback) { // 存入 Mongodb 的文档 var record = { _id:this._id, userName: this.userName, consumeDate: this.consumeDate, consumeSubject: this.consumeSubject, consumeAmount: this.consumeAmount, consumeRemark: this.consumeRemark, time: this.time, }; console.log('保存,记录日期:'+record.consumeDate); mongodb.open(function(err, db){ if (err) { return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err) { mongodb.close(); return callback(err); } // 插入 /* collection.insert(record, {safe: true} , function(err, post){ mongodb.close(); callback(err, post); }); */ console.log("插入或更新,判断依据_id="+record._id); if(record._id==null){ delete record._id; console.log("删除_id,record._id="+record._id); } collection.update({_id:(record._id?record._id:'no-record')}, record, {upsert:true,multi:false} , function(err, post){ mongodb.close(); callback(err, post); }); }); }); }; //删除方法 Consume.del = function del(id,callback){ mongodb.open(function(err,db){ if (err){ return callback(err); } var query = {_id:BSON.ObjectID.createFromHexString(id)}; db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } collection.remove(query,{safe:true},function(err,result){ mongodb.close(); if (err){ return callback(err); } console.log("删除成功。"); callback(null); }) ; }); }); }; Consume.get = function get(username,options, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var query = {}; if(options.keyword){ //var regx = new RegExp("/"+options.keyword+"/"); //注意,不用/ var regx = new RegExp(options.keyword); //限制用户名,科目或者金额与输入关键相等 query={"$and":[{userName:username}, {"$or":[{consumeSubject:regx}, {consumeDate:regx}, {consumeAmount:options.keyword} ] }] }; } else{ query.userName = username; } console.log("搜索条件:"); console.log(query); if(!options.limit){ options.limit=0; } collection.find(query).sort({consumeDate:-1 }).limit(options.limit).toArray(function(err, docs){ mongodb.close(); if (err){ callback(err, null); } var consumes = []; docs.forEach(function(doc, index){ var record = new Consume(doc.userName, doc.consumeDate,doc.consumeSubject,doc.consumeAmount,doc.consumeRemark, doc.time); record._id = doc._id; consumes.push(record); }); callback(null, consumes); }); }); }); }; Consume.stat = function stat(username, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var reduce = function(obj,prev){ prev.amount += isNaN(obj.consumeAmount)?0:Number(obj.consumeAmount); prev.count++; }; collection.group( [ 'consumeSubject' ], {userName:username}, {count:0,amount:0}, reduce, function(err, result){ mongodb.close(); if (err){ callback(err, null); } else{ console.log(result[0]); var amount = 0,count=0; result.forEach(function (item,index){ amount += item.amount; count += item.count; }); result.push({consumeSubject:'【合计】',count:count,amount:amount}); callback(null, result); } }); }); }); }; Consume.month = function month(username, callback) { mongodb.open(function(err, db){ if (err){ return callback(err); } // 读取 posts 集合 db.collection('consume', function(err, collection){ if (err){ mongodb.close(); return callback(err); } var map = function(){ emit(this.consumeDate.substr(0,7),{amount:this.consumeAmount,count:1}); }; var reduce = function(key,vals){ var val = 0,count=0; for(var i=0; i<vals.length;i++){ val += isNaN(vals[i].amount)?0:Number(vals[i].amount); count++; } return {amount:val,count:count}; } console.log("统计:"+username); collection.mapReduce( map, reduce, {out: {replace : 'temp', readPreference : 'secondary', query:{userName:username}}}, function(err, collection){ if (err){ mongodb.close(); callback(err, null); } else{ //console.log(collection); /* var amount = 0,count=0; result.forEach(function (item,index){ amount += item.amount; count += item.count; }); result.push({consumeSubject:'【合计】',count:count,amount:amount}); */ var results = []; collection.find().toArray(function(err,docs){ docs.forEach(function(item,idx){ console.log(item); //为了共用结果页面,统一使用consumeSubject results.push({consumeSubject:item._id,amount:item.value.amount,count:item.value.count}); }); mongodb.close(); callback(null, results); }); } }); }); }); };
全部源码见附件。
另,2014-04-02
系统开发好了之后,找了个服务器部署了一下,老婆用得不错,原来不太喜欢记账,现在记账很积极。我就又把系统完善了一下,增加了翻页、权限控制功能,将几个按钮修改成图标,布局更紧凑了一些,使用全局变量保存系统名称,方便修改。
- account.rar (297 KB)
- 描述: 个人记账系统源码
- 下载次数: 1012
- microblog.rar (250.8 KB)
- 描述: 调试通过的书中例子
- 下载次数: 529
- account(查询后修改保持查询条件V0.0.6).rar (308.1 KB)
- 描述: 查询后保持查询条件,较新的版本。
- 下载次数: 418
评论
21 楼
dengfeng_dengfeng
2017-06-23
纳尼 启动了 访问不了了啊 报这个错
/**************************************************/
/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */
/* 欢迎访问我的博客:http://wallimn.iteye.com */
/**************************************************/
============服务启动成功,监听端口:8484============
C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\connection\base.js:2
42
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\account\node_modules\_connect-mongo@0.4.0@connect-mongo\lib\connect-mo
ngo.js:161:23
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb\l
ib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\db.js:1930:5)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1427:14
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1560:7
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\cursor.js:162
:16
at commandHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongo
db\cursor.js:706:16)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1806:9
at Server.Base._callHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\connection\base.js:442:41)
/**************************************************/
/* 我的第一个NODE.JS例子。BY 隔壁老王 2014-3-29 */
/* 欢迎访问我的博客:http://wallimn.iteye.com */
/**************************************************/
============服务启动成功,监听端口:8484============
C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\connection\base.js:2
42
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\account\node_modules\_connect-mongo@0.4.0@connect-mongo\lib\connect-mo
ngo.js:161:23
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb\l
ib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\db.js:1930:5)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1427:14
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1560:7
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\cursor.js:162
:16
at commandHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongo
db\cursor.js:706:16)
at C:\account\node_modules\_mongodb@1.3.23@mongodb\lib\mongodb\db.js:1806:9
at Server.Base._callHandler (C:\account\node_modules\_mongodb@1.3.23@mongodb
\lib\mongodb\connection\base.js:442:41)
20 楼
wallimn
2016-07-16
a54409 写道
全tm错的
骚年,我运行是对的。看看是不是插件版本的问题。
19 楼
a54409
2016-06-28
全tm错的
18 楼
os_rover
2016-05-19
luguofei123@126.com
17 楼
os_rover
2016-05-19
[color=olive][color=cyan][size=xx-small][align=right][/size][/color][/color]
[/align]
引用 [list] | |
[*][img][url][/url][/img] | :P :twisted: :idea: :P :? :) |
[/list] |
16 楼
荆人七十
2016-05-17
谢谢分享~
15 楼
wallimn
2016-03-07
炫oO游侠 写道
王哥啊,学习你的资料中,目前已经运行起来了,但是程序经常出错,而且只能显示一条记录,编辑和删除还会导致崩溃,需要重启服务才行,请问你有完整的代码吗?或者能告知一下原因吗?我的邮箱503045550@qq.com
附件中是代码就是完整的代码,不能正常运行可能跟Node.js、以及使用插件的版本有关。
14 楼
炫oO游侠
2016-01-13
王哥啊,学习你的资料中,目前已经运行起来了,但是程序经常出错,而且只能显示一条记录,编辑和删除还会导致崩溃,需要重启服务才行,请问你有完整的代码吗?或者能告知一下原因吗?我的邮箱503045550@qq.com
13 楼
lwf60925
2016-01-13
老王哥,无法找到bson module是什么原因,我想问老王哥bson的版本有自己npm install 吗
12 楼
lwf60925
2015-12-26
王哥,提交记录的时候,id变成no-record。然后每一次提交都直接修改这个了
11 楼
wallimn
2015-12-14
鲁迅的围脖 写道
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
后面是较新版本的软件,后来简单修改了一下。第一个文件是最初的版本。
10 楼
wallimn
2015-12-14
鲁迅的围脖 写道
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
上传了附件,你自己下载吧,不发邮件了。
9 楼
鲁迅的围脖
2015-12-11
这是我的邮箱:luguofei123@126.com 谢谢老王哥了
8 楼
wallimn
2015-12-10
鲁迅的围脖 写道
老王哥,能提供一下app的h5代码吗?
![](/images/smiles/icon_redface.gif)
h5的代码什么意思?
留个邮箱,可以给你全部代码。
7 楼
鲁迅的围脖
2015-12-10
老王哥,能提供一下app的h5代码吗?
![](/images/smiles/icon_redface.gif)
6 楼
wallimn
2015-07-22
可能是connect-mongo的版本问题,我当时试着是好的。试试我使用的版本。
mongo数据库表结构会自动生成。
mongo数据库表结构会自动生成。
5 楼
ilywmf
2015-07-22
C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\lib\mong
odb\connection\base.js:242
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\Program Files\nodejs\node_modules\connect-mongo\lib\connect-mongo.js:1
61:23
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mong
o\node_modules\mongodb\lib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mo
ngo\node_modules\mongodb\lib\mongodb\db.js:1930:5)
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1427:14
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1560:7
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\cursor.js:162:16
试了下个人记账系统源码,报错了,不知什么原因
另外,mongo数据库表结构呢,自动生成的吗?
odb\connection\base.js:242
throw message;
^
Error: Error setting TTL index on collection : sessions
at C:\Program Files\nodejs\node_modules\connect-mongo\lib\connect-mongo.js:1
61:23
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1430:36
at __executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mong
o\node_modules\mongodb\lib\mongodb\db.js:1829:12)
at Db._executeInsertCommand (C:\Program Files\nodejs\node_modules\connect-mo
ngo\node_modules\mongodb\lib\mongodb\db.js:1930:5)
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1427:14
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\db.js:1560:7
at C:\Program Files\nodejs\node_modules\connect-mongo\node_modules\mongodb\l
ib\mongodb\cursor.js:162:16
试了下个人记账系统源码,报错了,不知什么原因
另外,mongo数据库表结构呢,自动生成的吗?
4 楼
vickypig
2014-06-04
express的版本啊。。。真心受不了
3 楼
wallimn
2014-05-31
Unexpected token ILLEGAL
看看函数的接口参数数量、类型是否正确。
看看函数的接口参数数量、类型是否正确。
2 楼
vickypig
2014-05-28
你好,记账这个,报错了。能看看是什么问题吗
E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\strategies\statistics_strategy.js:1
(function (exports, require, module, __filename, __dirname) {
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\repl_set.js:9:26)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Process finished with exit code 8
E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\strategies\statistics_strategy.js:1
(function (exports, require, module, __filename, __dirname) {
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\account\node_modules\mongodb\lib\mongodb\connection\repl_set\repl_set.js:9:26)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
Process finished with exit code 8
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18687编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2508部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3504两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 18491.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7701一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1288我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3276做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1190写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 4011大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2415一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7569我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2796@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2102转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3093用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1781element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9808示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6682申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5358最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5303springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10457微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
"H6逆变器拓扑:离网并网仿真模型研究,支持多模式功率调节与共模电流抑制",#H6逆变器拓扑并离网仿真模型 逆变器拓扑为:h6逆变器拓扑。 仿真说明: 1.离网时支持非单位功率因数负载。 2.并网时支持功率因数调节。 3.具有共模电流抑制能力(共模电压稳定在Udc 2)。 4.有两种滤波器版本(LC LCL)。 5.LC版本下,参考电流20A时所对应的电流THD约为1%。 此外,采用PR单环控制,具有sogipll锁相环,lcl滤波器。 注:(V0001) Plecs版本4.7.3及以上 ,H6逆变器拓扑;离网仿真;并网仿真;非单位功率因数负载;功率因数调节;共模电流抑制;共模电压稳定;滤波器版本;LC LCL滤波器;PR单环控制;sogipll锁相环;Plecs版本4.7.3,H6逆变器拓扑的并离网仿真模型
大厂PFC与全桥LLC集成变频控制的两相交错TCM图腾柱PWM代码实现方法及优化策略,大厂量产的两相交错TCM图腾柱变频控制PFC+全桥LLC源代码 PFC可通过变频控制实现软开关 ,两相交错TCM; 图腾柱变频控制; PFC; 全桥LLC; 软开关。,大厂高频两相交错TCM图腾柱PFC+全桥LLC变频控制源代码
台达PLC高效自动追剪系统:自动计算,稳定运行,可靠编程的自动化解决方案,台达PLC追剪追剪追剪加+剪切 ,编码器追踪送料速度和送料长度,程序可设置滚轮直径,编码器分辨率,电机分辨率及丝杠导程。 根据输入参数自动计算。 程序带手动正反转,自动追剪切断,带手动复位及回原点,调节方便。 实用已在机床上稳定运行两年,程序成熟可靠,程序是我自己写的算法,时请认准我本人,其他人均为盗版,盗版需谨慎。 台达plc,触摸屏用中达一体机触摸屏。 ,核心关键词:台达PLC;追剪;编码器追踪;送料速度和送料长度;程序设置;滚轮直径;电机分辨率;丝杠导程;自动计算;手动正反转;自动追剪切断;手动复位;回原点;程序成熟可靠;中达一体机触摸屏。,"台达PLC自动化追剪系统:精确编码追踪与手动控制集成"
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
# 基于Arduino的BSides Cheltenham 2024 UFO徽章系统 ## 项目简介 这是一个为BSides Cheltenham 2024定制的UFO徽章系统项目。项目包含电路板设计、Arduino代码以及配件清单等。通过此项目,参与者可以制作自己的专属徽章,体验科技与传统结合的乐趣。 ## 项目的主要特性和功能 1. 电路板设计使用Eagle工具设计的电路板,包括PCB文件和元件布局。 2. Arduino代码提供基于ATTiny402微控制器的Arduino代码,用于驱动徽章的硬件功能。 3. 定制设计文件上传了原始矢量设计文件,可根据需要进行修改和个性化定制。 4. 可定制化强可以通过简单的修改代码和更换硬件实现多种功能,比如加入LED灯显示效果、按键交互等。 ## 安装使用步骤 以下步骤假设用户已经下载了本项目的源码文件 1. 获取源码文件下载项目源码文件并解压。
基于西门子S7-200 PLC与组态王软件的洗衣机控制系统设计优化方案 No.710,No.710 基于西门子S7-200 PLC和组态王组态洗衣机控制系统设计 ,基于西门子S7-200 PLC; 洗衣机控制系统设计; 组态王组态; 控制系统设计。,西门子PLC与组态王洗衣控制系统的设计与实施。
2024免费毕业设计成品,包括源码+数据库+往届论文资料 启动教程:https://www.bilibili.com/video/BV11ktveuE2d 讲解视频:https://www.bilibili.com/video/BV1YfkHYwEME 二次开发教程:https://www.bilibili.com/video/BV1Cw2rY1ErC
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
"西门子224XP与昆仑通态触摸屏结合的螺杆式空压机工频运行系统:程序注释详尽,直接应用于工程实践的变频机替代方案",螺杆式空压机工频运行,变频机不能用使用西门子224xp 十昆仑通态触摸屏,程序有注释,可直接用于工程 ,螺杆式空压机; 工频运行; 变频机; 不可用; 西门子224xp; 昆仑通态触摸屏; 程序注释; 工程使用,"西门子224XP+昆仑通态触摸屏:螺杆空压机工频运行程序"
基于CNN-BiLSTM-SE注意力机制的时序预测模型:MATLAB环境下的数据回归分析与应用评估,基于卷积神经网络-双向长短时记忆网络结合SE注意力机制的时间序列预测(CNN-BiLSTM-SE) 基于MATLAB环境 替自己的数据即可 基本流程:首先通过卷积神经网络CNN进行特征提取,然后通过通道注意力机制SE对不同的特征赋予不同的权重,最后通过双向长短时记忆网络BiLSTM进行时间序列预测 数据回归预测评价指标为RMSE MAE MBE R2 ,核心关键词:卷积神经网络(CNN); 双向长短时记忆网络(BiLSTM); SE注意力机制; 时间序列预测; MATLAB环境; 特征提取; 权重赋予; 数据回归预测; 评价指标(RMSE、MAE、MBE、R2)。,CNN-BiLSTM-SE注意力机制:MATLAB环境下的时间序列预测基本流程
"MATLAB R2018A中基于超高斯全自动组织图像盲彩色反卷积方法研究——一种下采样预设值优化策略及参数设定",MATLAB环境下基于超高斯全自动组织图像盲彩色反卷积方法 算法运行环境为MATLAB R2018A,压缩包=数据+代码+参考。 opts.prescale = 1; %% downsampling opts.xk_iter = 5; %% the iterations opts.k_thresh = 1 20; opts.kernel_size = 51; ,MATLAB;超高斯全自动组织图像盲彩色反卷积方法;R2018A;压缩包;参数设置;opts.prescale;opts.xk_iter;opts.k_thresh;opts.kernel_size,MATLAB超高斯图像盲彩色反卷积算法v1.0
基于Omron PLC与MCGS组态的5层电梯控制系统优化设计:细节分析与工程实现,No.778 基于Omron欧姆龙PLC和MCGS组态5层五层电梯控制系统设计 ,基于Omron PLC; MCGS组态; 5层电梯; 控制系统设计,Omron PLC与MCGS组态五层电梯控制系统设计
"风能储能协同运行模型:永磁风机与储能系统的高效整合及控制策略研究【含详细参数选择与建模过程参考】",风力发电+储能并网协同运行模型【含个人笔记、参数选择参考资料】 包含永磁风机发电机、储能系统、单极单相并离网逆变器及其各自控制系统(也可以按照需求改为三相并网) 永磁直驱风机:机侧变流器采用转速外环电流内环的双闭环控制策略,爬山搜索法实现最大功率点跟踪控制。 储能电池采用buck-boost双向DCDC变器 控制策略采用电压外环电流内环双闭环控制 稳定直流母线电压400V恒定,电压纹波<1% 逆变并网采用单极调制,开关损耗大幅降低 逆变器采用电网电压前馈、电流环、锁相环控制,对于电网中含有的三次谐波有明显的抗干扰效果。 并网电流THD低至1.39%,满足并网要求 附带参考资料、建模过程参考文件夹(万字以上),含参数计算,亦有本人笔记,整理不易 ,风力发电; 储能并网; 永磁风机发电机; 控制系统; 储能系统; DCDC变换器; 电压控制; 逆变并网; 谐波抗干扰; 参数选择。,"协同运行模型:永磁风机储能系统及其控制系统设计与参数选择参考"
"X00133土壤侵蚀分析:R语言源码、数据集与效果图综合展示",X00133-土壤侵蚀数据分析R语言源码,数据集,和效果图 ,X00133;土壤侵蚀数据分析;R语言源码;数据集;效果图,"R语言源码分析X00133土壤侵蚀数据集与效果图展示"
MAC电脑QT安装资源包(一)
锂枝晶生长与隔膜特性研究:隔膜厚度和表面涂层对应力的补充影响分析,相场锂枝晶-隔膜厚度和表面涂层对枝晶生长影响(补充应力) 参考文献:Influences of Separator Thickness and Surface Coating on Lithium Dendrite Growth: A Phase-Field Study ,相场锂枝晶;隔膜厚度;表面涂层;应力;枝晶生长,相场研究:隔膜厚度与表面涂层对应力下锂枝晶生长的影响
项目均经过测试,可正常运行! 环境说明: 开发语言:java JDK版本:jdk1.8 框架:springboot 数据库:mysql 5.7/8 数据库工具:navicat 开发软件:eclipse/idea
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
基于三菱PLC与MCGS组态技术的自动门控制系统设计策略与应用,No.1074 基于三菱PLC和MCGS组态的自动门控制系统的设计 ,三菱PLC; MCGS组态; 自动门控制系统; 设计; 编号1074,基于三菱PLC与MCGS组态的自动门系统设计No.1074