이번 주 학습은 주로 NodeJS의 데이터베이스 상호 작용에 관한 것이며, 우리는 Jade Template를 사용하여 사용자 검증 웹 사이트를 함께 만듭니다. 주로 몇 가지 문제가 발생했습니다.
1. MongoDB 버전이 너무 낮습니다
npm err! 운영 체제 또는 아키텍처와 호환되지 않음 : [email protected]
0.9.9는 Linux, Darwin 및 FreeBSD 시스템 만 지원하며 최신 버전은 승리를 지원합니다.
2. Nodejs가 삽입 작업을 수행 한 후 결과를 읽을 수 없습니다.
코드 사본은 다음과 같습니다.
app.post ( '/signup', function (req, res, next) {
// 문서를 삽입하십시오
app.users.insert (req.body.user, function (err, doc) {
(err) 다음에 반환 (err);
res.redirect ( '/login/' + doc [0] .Email);
});
});
외관은 리디렉션이 실패했으며 실제 상황은 데이터베이스의 삽입이 성공했지만 DOC [0] .Email의 값은 물론 DOC가 비어 있다는 것입니다. 그 이유는 인서트와 같은 작업이 비동기 적으로 수행되기 때문입니다. 비동기 작업은 기본적으로 결과를 반환하여 성공적으로 실행 중인지 여부를 결정하지 않습니다. 이 기능은 세 번째 매개 변수 {safe : ture}, 즉 app.users.insert (req.body.user, {safe : ture}, function () {...})를 추가하여 구현해야합니다. 이런 식으로 결과는 성공적으로 읽습니다.
3. Connect-Connect Undefined Store가 나타납니다
코드 사본은 다음과 같습니다.
Mongostore = 요구 사항 ( 'Connect-Mongo')
app.use (express.session ({
비밀 : settings.cookiesecret,
상점 : New Mongostore ({
DB : settings.db
})
});
소스 코드는 위와 같습니다. 그 이유는 Connect-Mongo 모듈이 다른 버전의 Express를 기반으로 다르게 소개된다는 것이 밝혀졌습니다. Readme.md에는 특별한 알림도 있습니다.
코드 사본은 다음과 같습니다.
표현 4 :
var 세션 = 요구 사항 ( 'Express-Session');
var mongostore = require ( 'connect-mongo') (세션);
app.use ({{
비밀 : settings.cookie_secret,
상점 : New Mongostore ({
DB : settings.db,
})
});
표현 <4 :
var express = 요구 사항 ( 'Express');
var mongostore = require ( 'connect-mongo') (Express);
app.use (express.session ({
비밀 : settings.cookie_secret,
상점 : New Mongostore ({
DB : settings.db
})
});
다른 버전의 경우 그에 따라 수정하십시오.
4. 요약
이 책을 공부 한 후 Nodejs와 Active 외국어 웹 사이트의 특성 중 일부를 알고 있습니다. 노드에서 일부 인기있는 섹션의 업데이트 빈도도 학습의 어려움을 증가 시켰 으므로이 책은 입문으로 간주 될 수 있습니다. 다음으로, 우리는 실제 전투를 통해 Sails 백엔드 프레임 워크를 배울 계획입니다. 연구 중에 발생하는 문제는 노트북에도 기록됩니다.