我在openshift上尝试使用mongodb和nodejs,使用mongojs在nodejs和mongodb之间进行接口。
在mongoshell中我运行了“use nodejs”并定义了一个“得分”集合。我在其中保存了一些数据并正确显示。
在nodeserver的app.js文件中 我有
self.routes['/db'] = function(req, res) {
var db = require("./db");
db.scores.find(function(err,docs){res.send(docs);});
};
在db.js文件中我有
var dbName = "/nodejs";
var databaseUrl = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + ":" + process.env.OPENSHIFT_MONGODB_DB_PORT+ dbName;
// "username:password@example.com/mydb"
var collections = ["scores"]
var db = require("mongojs").connect(databaseUrl, collections);
module.exports = db;
当我访问url mydomain.com/db
时,我无法获取任何数据有人可以指出我做错了什么。数据库正在连接。我无法从乐谱收集中找到所有内容。
self.routes['/db'] = function(req, res) {
var db = require("./db");
db.scores.find(function(err,docs){res.send(docs);});
};
答案 0 :(得分:1)
我认为您应该使用收集方法来使用您的乐谱集合。如下所示:
db.collection('scores').find(function(err,docs){res.send(docs);});
或者使用toArray函数确保检索对象数组。
db.collection('scores').find().toArray(function(err, docs) {
console.dir(docs);
res.send(docs)
}
答案 1 :(得分:1)
这是我们连接到MongoDB服务器的方式:
//app.js
var databaseUrl = "mydb"; // "username:password@example.com/mydb"
var collections = ["users"]
var db = require("mongojs").connect(databaseUrl, collections);
db.users.find({email: "abcd@gmail.com"}, function(err, users) {
if( err || !users) console.log("No female users found");
else users.forEach( function(femaleUser) {
console.log(femaleUser);
} );
});
答案 2 :(得分:0)
我保存在单独文件中的数据库连接配置导致错误。这个配置工作,我能够获取数据库条目。使用注释掉的块或下面的代码。两者都做同样的事情。只需为尝试使用openshift的人发布此答案。
self.routes['/db'] = function(req, res) {
var dbName = "/nodejs";
var connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" + process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + ":" + process.env.OPENSHIFT_MONGODB_DB_PORT + dbName;
var db = mongojs(connection_string);
/*
var b = db.collection('books');
db.b.find(function(err, docs) {
res.send(docs);
});*/
db.collection('books').find(function(err,docs){
res.send(docs);
});
};
nodejs是用于其中的集合" books"存储。 定义var mongojs = require(' mongojs');在声明所有变量的最顶层,尽管如果在使用mongojs变量之前声明它并不重要。
答案 3 :(得分:0)
使用MongoClient。
//test is the database and students is the collection inside test.
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
console.log("Successfully connected to MongoDB ");
var cursor = db.collection('students').find({});
cursor.forEach(
function(doc) {
console.log("JSON doc: "+doc);
},
function(err) {
console.log("Error");
return db.close();
}
);
});
答案 4 :(得分:0)
您可以在Node中使用以下代码连接到MongoDB集合并将结果作为数组返回。
const MongoClient = require('mongodb').MongoClient;
const credentials = require("../credentials.js");
const dbUrl = 'mongodb://' + credentials.username +
':' + credentials.password + '@' + credentials.host + ':' + credentials.port + '/' + credentials.database;
MongoClient.connect(dbUrl, (err, client) => {
if (err) throw err;
console.log('Successfully connected');
let collection = client.db(credentials.database).collection('products');
collection.find({}).toArray((err, docs) => {
console.log(docs);
client.close();
});
});
这是MongoDB连接的凭据.js文件
module.exports = {
host: 'localhost',
port: '27017',
username: 'user',
password: 'secret',
database: 'your_db'
}