你都走了ssh隧道代理了,所以連接mongodb的地址應該是127.0.0.1
這只是一個異步流程控制的問題,寫成Promise返回db并使用。而Promise狀態(tài)確定不再更改,也就不會走你鏈接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:'請登錄'
})
}
}
})
};
這個是我的實現(xiàn)方法,這已經(jīng)算是‘回調(diào)地獄’了,有需要可以自己用Promise優(yōu)化。
試一下SQLAlchemy的event吧(http://docs.sqlalchemy.org/en...)
一個簡單的使用例子
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組織的,每個tuple都是固定的storage layout,即字段存儲的物理順序是固定的,解釋時是按照pg_attribute中存儲的順序。
PostgreSQL的字段順序不能直接使用SQL進行修改。但是可以間接操作,使用臨時表,將數(shù)據(jù)導入,然后再將數(shù)據(jù)統(tǒng)一插入原有表。
php 與 mysql 的交互,我個人使用的是 pdo。
$pdo = new PDO('mysql:dbname=testdb;host=127.0.0.1' , 'root' , '123456');
// 使用預處理語句
$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) {
// 驗證成功
} else {
// 驗證失敗
}
你把data打印出來看了就知道了
不知道你怎么操作的,我是這么操作的,且沒報錯,你可以試下:
1/go build -gcflags "-N -l" test.go
2/gdb test
3/(gdb) b test.go:8
4/(gdb) r
其中第3步是main函數(shù)所在的行號。
1.
你使用 npm 安裝了 mongodb 卻說不知道這個中間件叫什么,呃,準確的說,這個叫做 driver
npm install mongodb --save-dev
糾正一點, --save-dev 表示將 mongodb 添加到 dev 依賴,但事實上它是開發(fā)依賴,應該用 --save
2.
既然知道使用了 npm 安裝了 mongodb,那么直接用 npm + mongodb 作為關鍵字組合搜索就好了,推薦谷歌搜索。
搜索結果里找到第一個,一般就是 npm 的官網(wǎng)了。
mongodb
然后按圖索驥找到 doc
collection find
如果上面的你還看不懂,那么很可能是以下幾個原因
英語不好,看見一堆英文找不到文檔這個詞,自然找不到官方文檔
不會用搜索引擎搜技術問題。技術問題優(yōu)先用谷歌搜索,提煉一下問題,找到幾個關鍵字。
懶
關于如何搜索技術問題,我寫了一篇文章,有興趣的可以看看。
buf.toString()粘出來執(zhí)行一哈再說。
確認/usr/local/var/log/mongodb/目錄存在,且啟動mongod的用戶有寫的權限
執(zhí)行以下命令
$ ls -al /usr/local/var/log/mongodb/
應有以下類似的輸出
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下次遇到這種情況,要么找回來,要么下個新的,在新的里面偷過來
MyIsam不支持事務。myisam的每次的讀寫都會隱性的加上讀寫鎖,并未出現(xiàn)過鎖死的情況。讀鎖是共享的,而寫鎖是獨占的,意味一個session在寫的時候,另一個session必須等待
外鍵在mysql系統(tǒng)里只是一個邏輯結構定義,為了性能考慮,mysql會自動為每個外鍵創(chuàng)建一個索引結構段,而你定義了兩個外鍵,其中有一個已經(jīng)是主鍵或者某個索引的組成部分,并且滿足最左匹配原則,所以只會為你創(chuàng)建另外一個外鍵的索引
文中指的是客戶端的線程池大小。
數(shù)據(jù)庫服務器另有不同的估算方法。
選兩個相同的拖動, 就可以拖出相同日期了.
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。