小编f1n*_*1nn的帖子

NodeJS + Mongo native - 在查询之前检查集合是否存在

我有一个函数,试图从MongoDB中的设置集合中获取特定值.设置集合中包含设置值的设置对象标记为{'settings':'settings'}.架构是:

collection:setting
|--object
   |--{'settings':'settings'}
   |--{'valueA':'valueA'}
   |--...
Run Code Online (Sandbox Code Playgroud)

问题是当我第一次查询设置对象时,集合'settings'根本不存在.所以,

exports.getInstruments = function (callback) {
db.collection("settings", function(error, settings) {
    settings.find({ "settings" : "settings" }), (function(err, doc) {
           callback(doc.instruments);
    }); 
]);  
}
Run Code Online (Sandbox Code Playgroud)

只是挂起并且不调用回调.如果收集不存在,我应该返回""或未定义,否则 - doc.instrumens.

collections mongodb node.js

3
推荐指数
2
解决办法
1万
查看次数

NodeJS + MongoDB:find()其中{'value':<5 AND> 1} - 如何?

我有一个集合"公司".此集合中的每个对象都有"lastcall"-param.它是一个简单的字符串,包含最后一次调用的UNIX时间.我想找到所有的公司,其中最后呼叫高于比和较低b.我怎样才能做到这一点?这是我用来访问compnaies的代码:

//query to lastcall
collection.find( {'lastcall': a} , function (err, companies) {
    companies.each(function (err, company) {
        //do something with every object...
    });
});
Run Code Online (Sandbox Code Playgroud)

这段代码将返回'lastcall' = A的所有公司,但我需要所有A <'lastcall'<B的公司.我怎么能这样做?谢谢!

database mongodb node.js

2
推荐指数
1
解决办法
4053
查看次数

NodeJS + MongoDB + Redis:注册和登录 - 会话问题

我的代码在生产服务器上有一个相当奇怪的问题.在我的MacOS上它运行得很好,但是当我部署我的应用程序时,我无法登录.调试后,我发现我无法从req-object加载会话.这是所有主要部分的代码(设置,登录页面和登录后的主页)

//SETTINGS
var express = require('express');
var app = express.createServer();
var mongo = require('mongodb'),
    Server = mongo.Server,
    Db = mongo.Db,
    ObjectID = require('mongodb').ObjectID;
var BSON = require('mongodb').BSONPure;

var RedisStore = require('connect-redis')(express);

//connecting to mongo
var server = new Server('localhost', 27017, {
    auto_reconnect: true
});
var db = new Db('metadocs-node_db', server);

//setting express app
app.set('view engine', 'ejs');
app.configure(function () {
    app.use("/static", express.static(__dirname + '/static'));
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.session({
        secret: "meta-meta",
        store: new RedisStore
    }));
    app.use(express.methodOverride());
});

//login page - POST for /login …
Run Code Online (Sandbox Code Playgroud)

session login mongodb redis node.js

2
推荐指数
1
解决办法
4242
查看次数

NodeJS - 如何破解功能?

最近有一个类似的问题,但仍然无法得到它.我必须在添加新用户之前验证注册页面.

app.post('/signup', function(req, res) {
    //checking if first name is filled
    if (req.body.first_name = "" || req.body.first_name = null || req.body.first_name = undefined) {
      res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "empty_first_name" });
      break;
    }
    //checking if last name is filled
    if (req.body.last_name = "" || req.body.last_name = null || req.body.last_name = undefined) {
      res.render('signup', { "title": "Ttitle", "menu": "signup", user: req.user, "error" : "empty_last_name" });
      break;
    }
    //checking if email is filled
    if (req.body.email = "" …
Run Code Online (Sandbox Code Playgroud)

javascript return callback break node.js

2
推荐指数
1
解决办法
1万
查看次数

NodeJS + jQuery:POST后重定向:客户端或服务器 - 哪个更好?

我试图通过jQuery发布后重定向到指定的页面.这是我的POST代码:

$.post("/addcompany", {
name: $('#company_name').val(),
phone: $('#company_phone').val(),
email: $('#company_email').val(),
suppliers: JSON.stringify(suppliers),
}, function(){
    alert('after post'); 
    window.location.href = '/companies';
    }
);
Run Code Online (Sandbox Code Playgroud)

这是我在NodeJS上的后端代码:

app.post('/addcompany',function(req,res){
db.collection("companies",function(err,collection){
    collection.insert( {
        "name":req.body.name,
        "email":req.body.email,
        "phone":req.body.phone,
        "suppliers" : JSON.parse(req.body.suppliers)
    });
});
res.redirect('/companies');
});
Run Code Online (Sandbox Code Playgroud)

问题是如果我不是在jQuery脚本和NodeJS后端代码中重定向到'/ companies',我的重定向不起作用.我应该在哪里放置重定向代码?这是正常的,我必须把它放两次 - 无论是在服务器上还是在客户端上?谢谢!

jquery post redirect node.js

0
推荐指数
1
解决办法
4205
查看次数

NodeJS + JSON + jQuery:将JSON-object表单Node-backend发送到jQuery-frontend

我正在尝试将JSON-object形式的MongoDB发送到带有ejs模板引擎的页面.这是我的DB(一个JSON对象)的响应:

"suppliers": [
    {
        "lastname": "lastname1",
        "firstname": "firstname1",
        "middlename": "middlename1",
        "mobtel": "mobtel1",
        "worktel": "worktel1",
        "email": "email1"
    },
    {
        "lastname": "lastname2",
        "firstname": "firstname2",
        "middlename": "middlename2",
        "mobtel": "mobtel2",
        "worktel": "worktel2",
        "email": "email2"
    }
]
Run Code Online (Sandbox Code Playgroud)

当我从数据库中获取对象时,我必须将其字符串化为str以作为EJS模板引擎的var发送:

var myJSONText = JSON.stringify(doc.suppliers);
profile["suppliers"] =myJSONText;
...
res.render('profile.ejs',{profile:profile});
Run Code Online (Sandbox Code Playgroud)

在前端,我得到一个带有json数据的普通字符串.我通过jQuery解析它到一个对象:

var jsonObject = jQuery.parseJSON('<%= profile.suppliers %>');
for (var i=0; i<jsonObject.length; i++){
    //trying to show field 'name' for every supplier
    alert(jsonObject[i]['lastname']);
}
Run Code Online (Sandbox Code Playgroud)

......它不起作用,但应该提醒我两次.我试图检查一个纯文本的JSON字符串,来到前端,并找到了这样的符号:

[{&quot;lastname&quot;: &quot; ... 
Run Code Online (Sandbox Code Playgroud)

似乎jQuery.parseJSON无法从此类字符串创建有效对象.我做错了什么?谢谢!

更新:嗯,我已将我的代码转换为:

NodeJS代码:

profile["suppliers"] =doc.suppliers;
res.render('profile.ejs', { profile:profile });
Run Code Online (Sandbox Code Playgroud)

jQuery代码:

for …
Run Code Online (Sandbox Code Playgroud)

jquery post json ejs node.js

0
推荐指数
1
解决办法
6528
查看次数

NodeJS - 如何从模块返回数组

我有一个名为'userinfo.js'的模块,用于从DB中检索有关用户的信息.这是代码:

exports.getUserInfo = function(id){
db.collection("users", function (err, collection) {
    var obj_id = BSON.ObjectID.createFromHexString(String(id));
    collection.findOne({ _id: obj_id }, function (err, doc) {
        if (doc) {
            var profile = new Array();
            profile['username']=doc.username;
            return profile;
        } else {
            return false;
        }
    });
});
}
Run Code Online (Sandbox Code Playgroud)

从index.js(索引页的控制器,我试图访问userinfo)以这种方式:

var userinfo = require('../userinfo.js');

var profile = userinfo.getUserInfo(req.currentUser._id);
console.log(profile['username']);
Run Code Online (Sandbox Code Playgroud)

Node返回我这样的错误:

console.log(profile['username']);   -->     TypeError: Cannot read property 'username' of undefined
Run Code Online (Sandbox Code Playgroud)

我做错了什么?提前致谢!

arrays module export return node.js

0
推荐指数
1
解决办法
6016
查看次数