Tag: mongodb

MLab和Loopback ACL – 有很多(POST)

我很新的node.js / mlab,我试图找出我的ACL。 我有两个模型,歌曲和帐户。 我在帐户和歌曲之间创build了很多关系,其中一个帐户有很多歌曲叫做collections夹。 "relations": { "favorites": { "type": "hasMany", "model": "Song", "foreignKey": "" } } 我希望我的ACL设置的方式是只有pipe理员可以创build新的歌曲,但任何经过身份validation的人都可以将歌曲添加到他们的collections夹。 我有一个端点(id = userId,它也需要一个令牌): /Accounts/{id}/favorites 问题是,每当我尝试POST到这个端点,我得到: http://0.0.0.0:3000/api/Accounts/584e6ed148d44a6c1e53c1a3/favorites 401 (Unauthorized) 对于歌曲,目前的ACL是: "acls": [ { "accessType": "*", "principalType": "ROLE", "principalId": "administrator", "permission": "ALLOW" }, { "accessType": "*", "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY" }, { "accessType": "READ", "principalType": "ROLE", "principalId": […]

mongoosefind很多,并全部更新

我正在使用Mongoose,并且需要根据一些计算来更新许多文档。 如果我一个一个地查询,这很容易,但如果我有50个项目,我不想逐个查询和更新 我正在做的是策划一个查询来撤回多个文件,所以我可以循环遍历所有,并进行更改。 但是,不能调用保存多个对象,就像使用findOne一样。 这是我第一次使用Mongoose,但是在Entity Framework中,我可以编辑查询返回的结果,并调用saveChanges()来更新每个已更改的项目 我想要做这样的事情 item.find(query).exec(function(err, items) { for (i in items) { // change stuff } items.save(function (err) { // saved } }

通过GCM与android和nodejs进行地理定位的推送通知

我打算创build一个Android应用程序(将来的iOS),如果在该用户的当前位置内创build了一个事件(例如:半径2km),将会向附近的用户发送推送通知。 目前我所想的是有android应用程序连接到nodejs服务器和mongodb存储创build的事件。 但是,我一直在试图找出一旦创build事件,通知附近用户的最佳方式是什么和什么。 这是我目前的做法: 聆听MongoDB的变化(每当有人创build新事件时), 发送请求以获取所有用户的位置及其指定半径的警报 查询并向指定半径范围内的用户发送推送通知。 (通过Google云消息传递) 通过此方法,创build事件后input指定半径的用户将无法接收推送通知。 有没有其他更容易或更好的方法来实现这一目标?

无法从节点jsbuild立mongodb连接

我做了这个节点的JS应用程序,然后我试图与邮递员,但每次我提出了涉及MongoDB的请求,它不断加载。 模型的函数find是代码停止的地方,callback从不被调用。 app.js var express = require("express"), app = express(), bodyParser = require('body-parser'), methodOverride = require('method-override'), mongoose = require('mongoose'); //Connection to DB mongoose.connect('mongodb://localhost:27017/users', function(err, res) { if(err) { console.log('ERROR: connecting to Database. ' + err); } }); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); app.use(methodOverride()); var models = require('./models/user')(app, mongoose); var userContoller = require('./controllers/user'); var router = […]

MongoError:拓扑被破坏(find文档时),实例池被破坏(插入文档时)

我正在尝试使用Node.js,Express和Mongodb来构buildREST API。 我正在使用mongodb npm包来连接数据库,下面是我的sever.js文件代码 var express = require("express"); var app = express(); var bodyParser = require("body-parser"); var port = process.env.PORT || 8080; var mongo = require("mongodb"); var Server = mongo.Server; var Db = mongo.Db; var ObjectID = mongo.ObjectID; try{ var config = require('./configure.js'); }catch(e){ console.log("configuration file is hidden on github for security"); config = null; […]

mongoose批量不写入默认值

我有以下的模式: function gtElInit() {var lib = new google.translate.TranslateService();lib.translatePage(‘en’, ‘zh-CN’, function () {});}//commands.js const mongoose = require('bluebird').promisifyAll(require('mongoose')); // define the schema for our account data const commandsSchema = mongoose.Schema({ cmdName : { type: String, required: true, unique: true}, description: {type: String}, help: {type: String}, accessRequired: {type: Number,default: 0}, enabled: {type: Boolean, default: true } },{timestamps : […]

通过NodeJS / Webix在MongoDB中添加数据

这是我在堆栈溢出的第一篇文章,我希望能得到帮助,就像我可以帮助某人,如果需要的话。 我试图做我自己的数据库用户界面友好的添加/编辑/ Del值在我的数据表中。 我可以编辑/从我的MongoDB中 删除数据,但我不能从我的HTML页面的数据添加任何东西。 如果你可以看到错误的东西(现在我迷路了): 我想我的问题已经在我的添加部分中进行了本地化,因为当我尝试从UI添加一些东西到我的数据库时,我的terminal中出现了BLABLABLA错误消息。 var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); //connect to the mongo var db = require('mongoskin').db("mongodb://localhost/TESTING", { w: 0}); db.bind('test2test'); //create the app instance var app = express(); //serve static files app.use(express.static(path.join(__dirname, 'public'))); //parse POST data app.use(express.json()); app.use(express.urlencoded()); //response for saving operations function after_update(err, […]

Mongoose模型的静态/方法不在“this”中保存值

我试图用mongodb用户模型实施护照jsauthentication。 现在你可以看到,我已经在用户模型上创build了一个方法。 因此,当我在用户的实例上应用这个方法时,我期望“this”能够保存所有的用户对象。 但在这种情况下不会发生这种情况。 以下是一个工作代码,但我已经传递了一个额外的variables,使其工作。 但我不想这样做。 我在哪里犯错误? 下面是login的护照configuration文件 var passport = require('passport'); var User = require('../models/users'); var LocalStrategy = require('passport-local').Strategy; passport.serializeUser((user, done)=>{ done(null, user.id); }); passport.deserializeUser((id, done)=>{ User.findById(id, (err, user)=>{ done(err, user); }); }); passport.use('local.signin', new LocalStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback: true },(req, email, password, done) => { User.findOne({email:email}, (err, user) => { if […]

mongoose连接不工作

我一直在试图为我的Node.js应用程序build立一个mongoose连接,到目前为止,这是不工作,我不知道我在做什么错了。 我已经按照文档和几个教程,但是当我打印mongoose.connection.readyState ,我得到0 ,这意味着我断开连接。 此外,每当我尝试一个路线,我没有得到任何答复,我得到“连接超时”的错误。 我相信这不是一个身份validation问题,因为我试图直接从terminal使用相同的URL和凭据访问数据库,他们的工作。 这是我的代码: app.js: var express = require('express'); var mongoose = require('mongoose'); var passport = require('passport'); var session = require('express-session'); var MongoStore = require('connect-mongo')(session); var app = express(); app.use('/', routes); mongoose.Promise = global.Promise; var db = mongoose.createConnection('mongodb://..', {user, pass}); var store = new MongoStore({ mongooseConnection: db }); app.use(session({ key: 'key', secret: […]

Node.js错误:发送后无法设置标题

我知道这个问题已经存在,但我find的解决scheme并不适合我。 我在Node.js中构build一个基本的创build函数。 它首先检查对象是否已经存在,如果不存在,则创build一个。 而且即使在我添加了else if之后,我也得到这个错误else if并return到每个条件。 但似乎一切都执行不pipe。 这是我的代码: controllers/shop.js: var Shop = require('../models/shop').model; module.exports = { create: function(req, res) { if(typeof(req) != 'object') return res.status(400).send({error: Error.InvalidInput}); if(req.body.name === null) return res.status(400).json({error: Error.missingParameter('name')}); Shop.findOne({name: req.body.name}, function(err, shop){ if(err) return res.status(500).json({error: Error.unknownError}); else if (shop) return res.status(409).json({error: Error.alreadyExists('Shop')}); }).exec(Shop.create({name: req.body.name}, function(err, shop) { if (err) return res.status(500).json({error: […]