Tag: 数据库

维基百科如何将关键词转化为链接?

我想在Node.js中编写一些名为“tags”的模型。 假设我想在用户在评论中input一个标签,然后将其转换为相关标签页的链接。 例如,用户input评论:“什么是鸡?”,“鸡”变成到“鸡”标签页的链接。 我目前的做法是parsing文本与数据库查询的标签模型,但这似乎是一个坏的方式,更不用说处理多个文字标签,如“鸡汤”等。 非常感谢你的帮助! 我想维基百科有这样做的好方法。

MongoDB对每个用户的db.collection.distinct()的效率与保存为数据库条目和检索结果

在我的nodeJS应用程序中,我查询特定数据库字段的不同值的mongoDB 。 这将返回大约3000个值的数组。 每个用户都必须为每个会话获取这些数据(因为它是运行应用程序不可或缺的部分)。 我想知道是否更有效(和更快)为每个用户做到这一点: db.collection.distinct({"value"}, function(data){ // save the data in a variable }) 或者我是否应该在服务器端加载不同的值(比如每天一次),然后将其保存为每个用户检索的数据库条目,如下所示: // Server-side: db.collection.distinct({"value"}, function(data){ // save the data to MongoDB as a document }) // Client-side: db.serverInfo.find({name: "uniqueEntries"}, function(data){ // Save to browser as a variable }) 我自己testing过这个,不会注意到很大的区别,但是我是目前唯一使用这个应用程序的人。 一旦我得到10/100/1000 / 10,000用户,我想知道哪里最好用。

是否有可能在Express中使特定用户的会话数据无效或删除?

好的,所以对于我的高级devise项目,我正在和一个Node.JS / Express应用程序的团队一起工作,参加SGA学生志愿者项目。 我们正在Express中使用MongoDB进行持久性会话存储。 当用户login时,他们的文档被复制到他们的会话存储中。 任何时候用户数据都被修改,它被写入MongoDB数据库。 如果数据库更新成功,用户会话将更新为数据库中的新文档。 每次请求用户数据时,都会从会话存储中读取数据。 只要会话每次在数据库中成功修改用户数据时都保持更新,就可以工作。 它还使我们避免每次使用某些用户数据渲染视图时都必须从数据库读取数据。 我们有不同types的用户。 我们有学生volunteer型用户,不同级别的staff型用户。 我不认为我们的会话/数据库组合会有问题,直到我的合作伙伴实现了顶级stafftypes用户的function。 他们有能力修改学生volunteer用户的数据。 在写入数据库时​​这不是问题,我们只是将修改的数据写入志愿者文档。 问题出在这样的事实,据我所知,我们没有办法根据stafftypes用户的请求来更新/无效/删除volunteer用户的会话来修改它。 基本上,如果一个staff用户修改一个volunteer用户的数据,而这个volunteer用户没有签名,那么一切工作正常,将会进行修改,数据库中的volunteer文件将被修改。 当志愿者签署这个修改后的数据将从数据库中读取并存储在用户的会话中。 但是,如果staff用户修改了volunteer用户的数据,并且volunteer用户login,则可能会出现问题。 数据库中的volunteer文档将被更新,但是volunteer用户的会话将不会被更新,直到会话结束并且用户再次login从而使他们的文档被从数据库读入到他们的新会话中,或者直到volunteer用户修改他们的数据,使他们的会话更新来自数据库的新数据(这种可能性可能会或可能不会覆盖staff用户所做的改变)。 毋庸置疑,如果不加以解决,这可能会导致不一致。 有没有人有任何build议,我可以如何处理这个。 如果我们要允许一个用户更新另一个用户的数据,是否可以按照计划使用会话存储? 是否有可能使特定用户的会话无效/删除以响应不同的特定用户的请求? 或者可能修改特定用户的会话以响应不同的特定用户的请求? 编辑:不知道这是如何脱离主题,也许有点过于专注,可能没有“最小的理解”,我会尝试纠正,增加一些更多的澄清我的问题: function updateUserDocument(req, res, id, callback) { var data = req.body; var query = { _id: id }; var cmd = { $set: { role: 'volunteer', volunteer: data } }; […]

如何在nodejs中组织与数据库的交互?

我在我的快速应用程序中有一个这样的结构: 数据库帮手,我用来交互我的玛丽亚分贝 码: var MariaSQL = require('mariasql'); var db = new MariaSQL(); var queries = { getUserByID : 'SELECT * FROM user WHERE id=:id', getUserByUsername : 'SELECT * FROM user WHERE username=:username' }; module.exports = { connect : function(config){ db.connect({ host : config.maria.host, user : config.maria.user, password : config.maria.password, db : config.maria.db }); db.on('connect', function() […]

节点Mongoose,投射到ObjectId在path“PATH”上的值“N”失败

试图为Node Express应用程序设置一个mongoose数据库,我的一些文档有logging需要引用其他集合。 我知道Mongoose提供populate这种关系的populate方法,但是我很难设置它。 据我所知,我需要指定我的模式,因此… bookingSchema = mongoose.Schema _id: Number # Involved users __booker: {type: Schema.Types.ObjectId, ref: 'User'} …但是当我试图种子数据库__booker值,如1,2,3(所有这些都是在用户集合中的有效文档)获取错误… Cast to ObjectId failed for value "3" at path "__booker" 我会假设整数或整数string应该很容易强制到一个ObjectId,但似乎无法得到这个工作。 我究竟做错了什么?

在node.js中使用promise链接数据库查询

我试图使用spread方法来积累我已经读过的Q.js在这个线程中承诺的结果。 它在另一个代码块中工作,但不在下面的app.get例子中。 我想链接查询使用Sequelize和mongoose和传递所有返回的数据传播的方法。 这是我的尝试: var db = require('./db/managedb'); // Sequelize var mongo_models = require('./db/mongo_model')(mongoose); var WB = mongo_models.Webdata, Est = mongo_models.Estimate; app.get('/p/:tagId', function(req, res){ var filename = req.param("tagId"); var mysql = db.db.query('CALL procedure()').then(function(rows) { console.log(rows); }); // Sequelize var nosql = WB.find().exec(function(err,k){ console.log(k); }) // Mongoose var nosql2 = Est.find().exec(function(err,la){ console.log(la); }) // Mongoose Q.try(function(){ […]

如何在heroku postgres查询中使用LOCAL VARIABLES?

我已经在很多很多的线程中看过,并且通过各种文件来看看这个令人难以置信的简单任务,这让我非常吃惊。 我有一个node.js Web应用程序,它会在login时生成一个userId,并存储在一个会话对象中。 req.user.id <==我的本地variables的用户ID。 到目前为止,我的代码片段是这样的: var query = client.query("SELECT * FROM programs WHERE authorid = req.user.id", function (err, result) { if (err){ //Do erranous things } else { // Do good things } }); 我究竟做错了什么? 我怎么能做这个简单的任务比较一个数据库项目存储在本地variables的值? 任何/所有的帮助表示赞赏 – 我一直试图做6个小时。

在加载Express 4.x之前启动数据库连接

我可能会错过一些东西,但在官方文档中似乎没有任何东西,所以我坚持要求在这里; 我试图设置一些东西asynchronous(连接到数据库等),当应用程序启动。 我希望在应用程序准备好接受连接之前完成此操作(出于显而易见的原因)。 有没有办法在Express 4.x中做到这一点? 下面是一个基本上我想要的例子 ,但是它不被支持,并且在这一点上已经过了4年。 任何帮助表示赞赏。 编辑:我觉得我应该指出,我使用express-generator来设置我的应用程序,所以所有的服务器侦听完成bin/www 。 我应该只是修改这个文件? 或者我可以从app.js控制它?

用自定义的UID设置mongo的_id

背景: 我无法控制来自我的数据库文档“ 事情”的事件 。 当post进来时,我写了一个名为findOrCreate()的函数(它会在Things文档中find或创build一个logging(object?))。 为了减less冗余,我想使用第三方POST负载字段nuid来replace该logging(对象)的默认_id 。 题: 我如何正确地replace_id与有效载荷字段nuid ? 示例负载: curl -H "Content-Type: application/json" -X POST -d '{"participant":{"nuid":"98ASDF988SDF89SDF89989SDF9898"}}' http://localhost:9000/api/things 架构 'use strict'; var mongoose = require('mongoose'), Schema = mongoose.Schema; var ThingSchema = new Schema( {nuid: String} ); module.exports = mongoose.model('Thing', ThingSchema); thing.controller.js //*currently this function will have both _id and a nuid (which works […]

在定时器+一个条件上删除logging

我的程序是一个在线游戏。 我创build一个包含玩家的游戏对象。 如果没有其他玩家(不是创build游戏的玩家)join游戏,我想在3小时后删除游戏logging。 我可以指望玩家,我知道有关mongodb的TTL,但是我怎样才能设置一个只会触发的TTL,就是没有多个玩家?