>  기사  >  웹 프론트엔드  >  놀라운 node.js 읽기 노트: mongodb 데이터베이스 상호 작용_node.js

놀라운 node.js 읽기 노트: mongodb 데이터베이스 상호 작용_node.js

WBOY
WBOY원래의
2016-05-16 16:25:051741검색

이번 주 연구는 주로 nodejs 데이터베이스 상호 작용에 관한 것이며, jade 템플릿을 사용하여 사용자 검증 웹 사이트를 구축했습니다. 주로 몇 가지 문제가 발생했기 때문입니다.

1.mongodb 버전이 너무 낮습니다

npm ERR! 운영 체제 또는 아키텍처와 호환되지 않습니다: mongodb@0.9.9

0.9.9는 linux, darwin, freebsd 시스템만 지원하며 최신 버전은 win을 지원합니다.

2. nodejs가 삽입 작업을 수행한 후: 결과를 읽을 수 없습니다

코드 복사 코드는 다음과 같습니다.

app.post('/signup', function(req, res, next){
//문서 삽입
       app.users.insert(req.body.user, function(err, doc){
If(err) return next(err);
               res.redirect('/login/' doc[0].email);
});
});

리디렉션에 실패한 것처럼 보입니다. 실제 상황은 데이터베이스에 삽입에 성공했지만 doc[0].email 값은 말할 것도 없고 문서가 비어 있는 것입니다. 그 이유는 삽입과 같은 작업은 비동기적으로 수행되며, 비동기 작업은 작업 성공 여부를 확인하기 위해 기본적으로 결과를 반환하지 않기 때문입니다. 이 기능은 세 번째 매개변수인 {safe:ture}, 즉 app.users.insert(req.body.user, {safe:ture}, function(){……})을 추가하여 구현해야 합니다. 이런 식으로 결과를 성공적으로 읽었습니다.

3. connect-connect에 정의되지 않은 저장소가 나타납니다

코드 복사 코드는 다음과 같습니다.

MongoStore = require('connect-mongo')

app.use(express.session({
비밀:settings.cookieSecret,
상점:새로운 MongoStore({
          db:settings.db
})
}));

소스코드는 위와 같습니다. 그 이유는 Express의 버전이 다르며, connect-mongo 모듈이 다른 방식으로 도입되었기 때문으로 보입니다. Readme.md에도 특별한 알림이 있습니다.

코드 복사 코드는 다음과 같습니다.

Express4 사용:
var 세션 = require('express-session');
var MongoStore = require('connect-mongo')(session);
       app.use(세션({
          비밀: settings.cookie_secret,
         상점: new MongoStore({
          db: settings.db,
})
}));
Express<4:
var express = require('express');
var MongoStore = require('connect-mongo')(express);
App.use(express.session({
          비밀: settings.cookie_secret,
         상점: new MongoStore({
          db: settings.db
})
}));

다른 버전의 경우 적절하게 수정하세요.

4. 요약

이 책을 공부하면서 nodejs의 특징과 활발하게 활동하는 외국어 사이트를 알게 되었습니다. 노드의 일부 인기 섹션의 업데이트 빈도도 학습 난이도를 높이는 데 도움이 됩니다. 다음으로는 실제 전투를 통해 돛 백엔드 프레임워크를 배워볼 예정이다. 공부하면서 겪은 문제도 노트에 기록됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.