express mongoose中db.once('open')进入不了流程。 - CNode技术社区

express mongoose中db.once('open')进入不了流程。
发布于 13 年前 作者 qq277049 6970 次浏览 最后一次编辑是 9 年前
exports.c_39 = function(req,res) {
 var n = require('needle')
 var $ = require('jquery').create()
 var iconv = require('iconv').Iconv;
 var lite = require('iconv-lite')
 var mongoose = require('mongoose');
 var async = require('async')
 var mysql = require('mysql')
 var conn = mysql.createConnection(
 {
 host : 'localhost',
 user : 'root',
 password : '',
 database : 'pw'
 }
 )
 conn.connect()
 var title =''
 var question = []
 var answer = []
 var author = [] //作者
 var cid = 0 //分类ID
 var fid = 0 //分类id
 var parentid = 0
 var type = ['category','forum','sub','sub2']
 var fup = ''
 var fupname = ''
 mongoose.createConnection('mongodb://localhost/cj');
 var db = mongoose.connection;
 db.on('error', console.error.bind(console, 'connection error:'));
 var content = req.body.content
 var url = req.body.url
 if(req.body.pass != 'discuzphpwind')
 {
 req.send('access deind')
 return;
 }
 var cate = []
 //分类抓取
 $(content).find('.ask-sub a[target="_self"]').each(function(i,v){
 cate.push($(v).html().replace(/(^\s*)|(\s*$)/g, ""))
 })
 //分类module
 console.log('a')
 db.once('open',function(){
 console.log('b')
 var cat = mongoose.Schema({
 name:String,
 fid:Number,
 parentid:Number,
 type:String
 })
 var t = mongoose.model('category',cat)
 async.series([
 function(callSeries){
 async.eachSeries(cate,function(v,callback){
 console.log(v)
 t.findOne({name:v},function(err,value){
 var temp = type.shift()
 //分类不存在
 if(value == null)
 {
 if(cate.length == 3)
 {
 if(temp == 'category')
 {
 var issub = 0
 var hassub = 1
 } else if(temp == 'forum') {
 var issub = 0
 var hassub = 1
 } else if (temp == 'sub') {
 var issub = 1
 var hassub = 1
 }
 } else if(cate.length == 2) {
 if(temp == 'category')
 {
 var issub = 0
 var hassub = 1
 } else if(temp == 'forum') {
 var issub = 0
 var hassub = 0
 }
 } else {
 console.log("还未记录的数量")
 return;
 }
 var sql = "insert into pw_bbs_forum (parentid,type,issub,hassub,name,vieworder,across,fup,fupname,isshow,isshowsub,newtime,created_time" +
 ",created_userid,created_ip) values(?,?,?,?,?,0,0,?,?,1,0,0,0,0,0)"
 var sql_values = [fid,temp,issub,hassub,v,fup,fupname]
 conn.query(sql,sql_values,function(error,results){
 if(error) {
 console.log("插入记录出错" + error.message)
 conn.end()
 return;
 }
 fid = results.insertId
 conn.query("insert into pw_bbs_forum_statistics (fid) values("+fid+")")
 var extra = [fid,'a:2:{s:9:"allowtype";a:1:{i:0;s:7:"default";}s:9:"typeorder";a:1:{s:7:"default";i:0;}}']
 conn.query("insert into pw_bbs_forum_extra (fid,settings_basic) values(?,?)",extra)
 fupname = v+'\t' + fupname
 if(fup == '')
 {
 fup = fid
 } else {
 fup =fid + ','+fup
 }
 new t({name:v,fid:fid,parentid:parentid,type:temp}).save()
 if(temp =='category')
 {
 cid = fid
 }
 parentid = fid
 callback(null,v)
 })
 } else {
 if(fupname == '')
 {
 fupname = value.name
 } else {
 fupname = value.name+'\t' + fupname
 }
 fid = value.fid
 if(fup == '')
 {
 fup = fid
 } else {
 fup =fid + ','+fup
 }
 if(value.type == 'category')
 {
 cid = value.fid
 }
 parentid = value.parentid
 callback(null,v)
 }
 })
 },function(err){
 callSeries(null)
 })
 },
 function(callSeries){
 //标题
 title = $(content).find('title').text().split('_39').shift()
 $.each($(content).find('.tboxs'),function(i,v){
 $(v).find('.anniu').nextAll().remove()
 $(v).find('.tousu').remove()
 $(v).find('.anniu').remove()
 $(v).find('.annius').remove()
 $(v).find('.cainabox').remove()
 $(v).find('.clearer').remove()
 $(v).find('ul').remove()
 var cc = $(v).find('.tbrig').html()//内容
 var a = $(v).find('.username').text()
 if(i == 0)
 {
 question = {content:cc,author:a}
 } else {
 answer.push({content:cc,author:a})
 }
 })
 callSeries(null)
 },
 function(callSeries){//信息存储
 var author = mongoose.model('author',mongoose.Schema({
 id:Number,//存储到mysql中的id
 name:String//作者的ID
 }))
 async.series([
 function(callAuthor){//储存问题的作者
 author.findOne({name:question['author']},function(errData,dataValue){
 if(errData){
 throw dataValue
 }
 if(dataValue == null)
 {
 //添加用户信息
 var sql = "insert into pw_user (username,email,password,status,groupid,memberid,regdate) values " +
 "(?,?,'null',0,1,8,?)"
 var sql_value = [question['author'],'local[@59n](/user/59n).net',parseInt(new Date().getTime()/1000)]
 console.log(sql_value)
 conn.query(sql,sql_value,function(errSql,result){
 if(errSql) throw errSql;
 //储存到mongodb
 new author({name:question['author'],id:result.insertId}).save()
 question['author'] = {author:question['author'],uid:result.insertId}
 sql = "insert into pw_user_data (uid) values(?)"
 sql_value = [result.insertId]
 conn.query(sql,sql_value)
 callAuthor()
 })
 } else {
 question['author'] = {author:question['author'],uid:dataValue.id}
 callAuthor()
 }
 })
 },
 function(callAnswerAuthor){//储存作者
 async.eachSeries(answer,function(v,callAnswerSeriesAuthor){
 author.findOne({name:v['author']},function(errData,dataValue){
 if(errData){
 throw dataValue
 }
 if(dataValue == null)
 {
 //添加用户信息
 var sql = "insert into pw_user (username,email,password,status,groupid,memberid,regdate) values " +
 "(?,?,'null',0,1,8,?)"
 var sql_value = [v['author'],'local[@59n](/user/59n).net',parseInt(new Date().getTime()/1000)]
 conn.query(sql,sql_value,function(errSql,result){
 if(errSql) throw errSql;
 //储存到mongodb
 new author({name:v['author'],id:result.insertId}).save()
 v['author'] = {author:v['author'],uid:result.insertId}
 sql = "insert into pw_user_data (uid) values(?)"
 sql_value = [result.insertId]
 conn.query(sql,sql_value)
 callAnswerSeriesAuthor()
 })
 } else {
 v['author'] = {author:v['author'],uid:dataValue.id}
 callAnswerSeriesAuthor()
 }
 })
 },function(err){
 callAnswerAuthor()
 })
 },
 function(callSaveContent){
 var m39 = mongoose.Schema({
 tid:Number,//问题的id
 date:{type:Date,default:Date.now},
 answer_num:Number,
 url:String//采集的url
 })
 var c_39 = mongoose.model('c_39',m39)
 c_39.findOne({url:url},function(errData,dataValue){
 if(dataValue == null)
 {
 //储存到mysql里面
 var sql = "insert into pw_bbs_threads (fid,subject,ischeck,created_time,created_username,created_userid,created_ip) values" +
 "(?,?,?,?,?,?,?)"
 console.log(question)
 var sql_values = [fid,title,1,parseInt(new Date().getTime()/1000),question['author'].author,question['author'].uid,'127.0.0.1']
 conn.query(sql,sql_values,function(errData,result){
 if(errData){
 console.log('出现异常信息')
 throw errData
 }
 var tid = result.insertId
 var temp = [tid,fid,parseInt(new Date().getTime()/1000),parseInt(new Date().getTime()/1000)]
 //帖子索引表-新帖索引
 conn.query("insert into pw_bbs_threads_index(tid,fid,created_time,lastpost_time) values(?,?,?,?)",temp,function(err,dataValue){
 if(err)
 {
 console.log('pw_bbs_threads_index 这里错了')
 throw err
 }
 })
 //增加内容
 temp = [tid,question['content']]
 conn.query("insert into pw_bbs_threads_content (tid,content,usehtml) values(?,?,1)",temp,function(err,dataValue){
 if(err)
 {
 console.log('pw_bbs_threads_content 这里错了')
 throw err
 }
 })
 //帖子索引表-分类索引
 temp = [tid,cid,fid,parseInt(new Date().getTime()/1000),parseInt(new Date().getTime()/1000)]
 conn.query("insert into pw_bbs_threads_cate_index (tid,cid,fid,created_time,lastpost_time) values(?,?,?,?,?)",temp,function(err,dataValue){
 if(err)
 {
 console.log('pw_bbs_threads_cate_index 这里错了')
 throw err
 }
 })
 //回复
 $.each(answer,function(i,v){
 sql = "insert into pw_bbs_posts (usehtml,fid,tid,ischeck,content,created_time,created_username,created_userid,reply_notice,ipfrom) values" +
 "(1,?,?,?,?,?,?,?,?,?)"
 sql_values = [fid,tid,1, v.content,parseInt(new Date().getTime()/1000), v['author'].author,v['author'].uid,1,'本机地址']
 conn.query(sql,sql_values)
 //更新主题
 sql = "update pw_bbs_threads set replies = replies + 1 ,lastpost_time = ?,lastpost_userid = ?,lastpost_username = ? where tid = ?"
 sql_values = [parseInt(new Date().getTime()/1000),v['author'].uid,v['author'].author,tid]
 conn.query(sql,sql_values)
 })
 //储存到mongodb
 var saveData = {
 tid:tid,
 answer_num:answer.length,
 url:url
 }
 new c_39(saveData).save()
 })
 } else {
 console.log('存在')
 }
 })
 }
 ])
 }
 ])
 })
 res.send('yes')
}
2 回复
//分类module
 console.log('a')
 db.once('open',function(){
 console.log('b')
 var cat = mongoose.Schema({
 name:String,
 fid:Number,
 parentid:Number,
 type:String
 })

可以打印出’a’但是就是死活打印不了’b’。没有进入db.once(‘open’,funciton(){})回调函数里面,求解啊?

这个是post请求

回到顶部

AltStyle によって変換されたページ (->オリジナル) /