你都走了ssh隧道代理了,所以連接mongodb的地址應(yīng)該是127.0.0.1
這只是一個(gè)異步流程控制的問題,寫成Promise
返回db
并使用。而Promise
狀態(tài)確定不再更改,也就不會(huì)走你鏈接db
的邏輯
自問自答!
// 模擬前端返回的數(shù)據(jù)
paperForm = {
name: '試卷名',
total: 100,
....
questions: [
{
name: '問題1',
answer: 'A',
type: 'single',
...
},
{
name: '問題2',
answer: 'A',
type: 'single',
...
},
...
]
}
exports.savePaper = function (req, res) {
let paperForm = req.body.paperForm;
let userName = req.session.userName;
// console.log(paperForm);
// console.log(userName);
if(paperForm == {}){
res.json({
status:'5',
msg: '數(shù)據(jù)不能為空'
})
}
Teacher.findOne({"userName": userName}, (err,doc)=>{
if (err) {
res.json({
status:'1',
msg: err.message
})
} else {
if (doc) {
let paperData = {
name:paperForm.name,
totalPoints:paperForm.totalPoints,
time:paperForm.time,
_teacher: doc._id,
_questions: [],
examnum:0
}
Paper.create(paperData,function (err1,doc1) {
if (err1) {
res.json({
status:'1',
msg: err.message
})
} else {
if (doc1) {
// console.log('doc1 paper:'+doc1._id);
doc._papers.push(doc1._id); // 教師中添加該試卷
doc.save(); // 很重要 不save則沒有數(shù)據(jù)
// console.log('doc teacher'+doc._papers);
paperForm.questions.forEach(item => {
item._papers = [];
item._papers.push(doc1._id);
item._teacher = doc._id;
})
Question.create(paperForm.questions,function (err2,doc2) {
if (err2) {
res.json({
status:'1',
msg: err.message
})
} else {
if (doc2) {
// console.log('doc2 ques:'+doc2)
doc2.forEach(item => {
doc1._questions.push(item._id);
})
doc1.save(); // 很重要 不save則沒有數(shù)據(jù)
res.json({
status:'0',
msg: 'success'
})
} else {
res.json({
status: '2',
msg:'沒找到題目'
})
}
}
})
} else {
res.json({
status: '2',
msg:'沒找到試卷'
})
}
}
})
}
else {
res.json({
status: '2',
login: false,
msg:'請(qǐng)登錄'
})
}
}
})
};
這個(gè)是我的實(shí)現(xiàn)方法,這已經(jīng)算是‘回調(diào)地獄’了,有需要可以自己用Promise優(yōu)化。
試一下SQLAlchemy的event吧(http://docs.sqlalchemy.org/en...)
一個(gè)簡(jiǎn)單的使用例子
import sqlalchemy
from sqlalchemy import event
from models import Wallet
class User(db.Model):
name = sqlalchemy.column(s.String)
@staticmethod
def after_create(mapper, connection, target):
wallet = Wallet()
db.session.add(wallet)
db.session.commit()
event.listen(User, 'after_insert', User.after_create)
The higher the cardinality, the greater the chance that MySQL uses the index when doing joins.
在PG中,數(shù)據(jù)是tuple組織的,每個(gè)tuple都是固定的storage layout,即字段存儲(chǔ)的物理順序是固定的,解釋時(shí)是按照pg_attribute中存儲(chǔ)的順序。
PostgreSQL的字段順序不能直接使用SQL進(jìn)行修改。但是可以間接操作,使用臨時(shí)表,將數(shù)據(jù)導(dǎo)入,然后再將數(shù)據(jù)統(tǒng)一插入原有表。
php
與 mysql
的交互,我個(gè)人使用的是 pdo。
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1' , 'root' , '123456');
// 使用預(yù)處理語句
$stmt = $pdo->prepare("select count(*) as `count` from user where username = :username and password = :password");
$stmt->execute([
':usename' => $_POST['username'] ,
':password' => $_POST['password']
]);
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
$count = $res[0]['count']
// 數(shù)量
var_dump($count);
if ($count > 0) {
// 驗(yàn)證成功
} else {
// 驗(yàn)證失敗
}
你把data打印出來看了就知道了
不知道你怎么操作的,我是這么操作的,且沒報(bào)錯(cuò),你可以試下:
1/go build -gcflags "-N -l" test.go
2/gdb test
3/(gdb) b test.go:8
4/(gdb) r
其中第3步是main函數(shù)所在的行號(hào)。
1.
你使用 npm 安裝了 mongodb 卻說不知道這個(gè)中間件叫什么,呃,準(zhǔn)確的說,這個(gè)叫做 driver
npm install mongodb --save-dev
糾正一點(diǎn), --save-dev 表示將 mongodb 添加到 dev 依賴,但事實(shí)上它是開發(fā)依賴,應(yīng)該用 --save
2.
既然知道使用了 npm 安裝了 mongodb,那么直接用 npm + mongodb 作為關(guān)鍵字組合搜索就好了,推薦谷歌搜索。
搜索結(jié)果里找到第一個(gè),一般就是 npm 的官網(wǎng)了。
mongodb
然后按圖索驥找到 doc
collection find
如果上面的你還看不懂,那么很可能是以下幾個(gè)原因
英語不好,看見一堆英文找不到文檔這個(gè)詞,自然找不到官方文檔
不會(huì)用搜索引擎搜技術(shù)問題。技術(shù)問題優(yōu)先用谷歌搜索,提煉一下問題,找到幾個(gè)關(guān)鍵字。
懶
關(guān)于如何搜索技術(shù)問題,我寫了一篇文章,有興趣的可以看看。
buf.toString()粘出來執(zhí)行一哈再說。
確認(rèn)/usr/local/var/log/mongodb/目錄存在,且啟動(dòng)mongod的用戶有寫的權(quán)限
執(zhí)行以下命令
$ ls -al /usr/local/var/log/mongodb/
應(yīng)有以下類似的輸出
total 56
drwxr-xr-x 3 abc admin 96 12 25 23:54 .
drwxr-xr-x 7 abc admin 224 10 23 22:41 ..
-rw-r--r-- 1 abc admin 25444 12 26 20:25 mongo.log
下次遇到這種情況,要么找回來,要么下個(gè)新的,在新的里面偷過來
MyIsam不支持事務(wù)。myisam的每次的讀寫都會(huì)隱性的加上讀寫鎖,并未出現(xiàn)過鎖死的情況。讀鎖是共享的,而寫鎖是獨(dú)占的,意味一個(gè)session在寫的時(shí)候,另一個(gè)session必須等待
外鍵在mysql系統(tǒng)里只是一個(gè)邏輯結(jié)構(gòu)定義,為了性能考慮,mysql會(huì)自動(dòng)為每個(gè)外鍵創(chuàng)建一個(gè)索引結(jié)構(gòu)段,而你定義了兩個(gè)外鍵,其中有一個(gè)已經(jīng)是主鍵或者某個(gè)索引的組成部分,并且滿足最左匹配原則,所以只會(huì)為你創(chuàng)建另外一個(gè)外鍵的索引
文中指的是客戶端的線程池大小。
數(shù)據(jù)庫(kù)服務(wù)器另有不同的估算方法。
選兩個(gè)相同的拖動(dòng), 就可以拖出相同日期了.
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問,美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。