簡體   English   中英

簡單的數據庫mongo查詢出錯了?

[英]Simple db mongo query gone wrong?

嘿,我試圖從index.js文件中查詢數據庫(mongodb),然后將查詢中的值返回到變量中,以便隨后可以使用該變量在網站上顯示人員信息。 我目前有此代碼,但它給我帶來了問題。 試圖弄清楚如何以正確的方式查詢它。 我正在查詢電子郵件,但我想根據電子郵件查詢提取名字。 我正在使用node.js和jade作為我的視圖引擎。

var mongoose = require('mongoose')
  , db = mongoose.createConnection('mongodb://localhost/test5');

var user = function (name) { 
    var name = db.users.find({ email: 'works@gmail.com' }).pretty();
    console.log(name); 
    return name;
};

exports.index = function(req, res) {
    res.render('index', { title: 'Weblio', user: user});
};

看來您使用的是Mongoose,所以我建議您使用過去對我來說效果很好的查詢功能。 它還有助於為存儲在MongoDB中的數據建立Mongoose模型。

嘗試以下操作(注意:它未經測試,但是我從運行中的程序中將其拉出):

var mongoose = require('mongoose')
    , Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/test5');

var UserSchema = new Schema({
    email: { type: String, index: true },
    firstName: { type: String },
    lastName: { type: String }
});

mongoose.model('User', UserSchema);

var User = mongoose.model('User');

exports.index = function(req, res) {
    User.findOne({
        email: "someone@something.com"
    }, function(err, user) {
       if(err) {
           res.send(err);
       } else {
           console.log(user.firstName);
           res.render('index', {title: 'Weblio', user: user.firstName});
       }
    });
}

節點中的幾乎所有IO都是異步的,這意味着您的find方法不會返回實際結果,而是會返回一個Promise或期望將使用結果調用該回調。

嘗試這個:

var mongoose = require('mongoose')
  , db = mongoose.createConnection('mongodb://localhost/test5');


exports.index = function(req, res) {
  db.users.find({ email: 'works@gmail.com' }, function(err, data){
    if(err){
      return req.send(500);
      }
    res.render('index', { title: 'Weblio', user: JSON.stringify(data)});
    });
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM