Tag: mongodb

MongoDB节点API上的ISODate和时区

我使用Node构build了一个API,IBM Strongloop框架以及一个MongoDB数据库。 我有一个date时区的问题。 在前端,我有一个反应datepicker创builddate对象。 我在法国,所以GMT + 1 。 如果我在2000年1月6日的前台创build了一个出生date ,XHR请求会发送“2000-01-05T23:00:00.000Z”给API。 如果我在前台尝试新date('2000-01-05T23:00:00.000Z'),我会得到正确的dateThu Jan 06 2000 00:00:00 GMT + 0100(CET) 在时区GMT + 0的API服务器上,如果检查数据库,我可以看到它是ISODate(“2000-01-05T23:00:00Z”) 如果我在服务器上尝试新date('2000-01-05T23:00:00Z'),我得到错误的dateWed Jan 05 2000 23:00:00 GMT + 0000(UTC) 当然,我的用户可以有不同的时区,所以将服务器时区设置为GMT + 1不会解决问题。 什么是正确的解决scheme? 发送date到服务器作为string,没有时区,并让它build立在插入之前的date? 还是有另一种方式?

500内部服务器错误,表示反应mongo mern堆栈

您好我有我的反应组件中的registry单的麻烦,我用mongodb,这里是我的服务器,路由和注册组件我得到这个错误 xhr.js:178 POST http://localhost:3000/api/user/ 500 (Internal Server Error) dispatchXhrRequest @ xhr.js:178 xhrAdapter @ xhr.js:12 dispatchRequest @ dispatchRequest.js:59 Promise resolved (async) request @ Axios.js:51 Axios.(anonymous function) @ Axios.js:71 wrap @ bind.js:9 saveUser @ API.js:18 Signup._this.handleSubmit @ Signup.js:47 callCallback @ react-dom.development.js:540 invokeGuardedCallbackDev @ react-dom.development.js:579 invokeGuardedCallback @ react-dom.development.js:436 invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js:450 executeDispatch @ react-dom.development.js:834 executeDispatchesInOrder @ react-dom.development.js:853 executeDispatchesAndRelease […]

改变其他元素的dynamic价值

我想问一下,如何根据用户select的select菜单中的选项dynamic改变表格的值。 我正在使用mongoDB,像“难度”这些值已经保存在数据库(截图)。 我有这个问题,因为我不能把一个JSvariables到我的EJS模板,所以我不能告诉哪个抢劫被选中。 就像在这个截图: 我的目标的形象 这是我的EJS页面的一部分 <form class="robbery-form"> <select> <% if(typeof robbery !== 'undefined') {%> <% for(var i=0; i<robbery.length; i++) {%> <option><%= robbery[i].name %></option> <% } %> <% } %> </select> <input type="submit" value="Do it!"> </form>

如何使node.js和mongoDB中的循环同步运行

这是我第一次使用Node.js,并且遇到了问题。 我从API获取一些数据,并将它们存储在一个数组中。 然后,我正在做一些MongoDB的查询,知道我在该数组上的数据是否在数据库中。 我想为每个数组的出现使用一个for循环,但是当我尝试调用MongoDB时,for循环不断地增加计数器,而不用等待查询和相对响应的结束,并且我只获取最后一次出现的数据(反复)。 我的代码有一部分,而且在最后一次出现的时候,我总是得到相对于控制台的'结果'(例如,如果我期望像'1,2,3,4,5'这样的东西,我有'5 5 5 5') 我怎样才能确保for循环以正确的方式工作? 感谢帮助。 for ( counter = 0; counter < array.lenght; counter ++) { MongoClient.connect(url, function (err, db) { var query = { name: array[counter] }; db.collection("collectionName").find(query).toArray(function (err, result) { // Check if 'query' value exist in the database, if yes do some stuff, otherwise do others stuff […]

NodeJS Passport本地身份validation不起作用

我使用passportjs本地进行身份validation。 它只是redirect到failureRedirect它不显示任何错误,它总是redirect到failureRedirect与原始用户名和密码,以及重复什么是我的代码中的错误 我的passport.js文件: const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const bcrypt = require('bcryptjs'); const Admin = require('../models/admin/user'); const config = require('../config/database'); module.exports = function(passport){ // With local startegy passport.use(new LocalStrategy(function (userName, password, done){ // Match Username let query = {userName:userName}; Admin.findOne(query, function(err, user){ console.log(user); if(err) throw err; if(!user){ console.log('No user Found'); return done(null, […]

EPERM:不允许操作,取消链接 – meteor错误

我是meteor的新手,特别是安装npm和运行meteor命令。 我摆脱了在安装部分的所有错误,但现在每当我在PowerShell上运行meteor命令,我得到这个错误: EPERM:操作不允许,取消链接'C:\用户\用户名\桌面\项目名称\包\ rocketchat谷歌vision.npm \ package-new-66a0vd.nnlae \ node_modules' 我无法访问本地主机:3000。

如何用mongodb node.js中的string填充_id字段?

我有两个集合用户和评论。用户有字段: const user = mongoose.Schema({ _id :("In the form of ObjectID"), //ObjectId("5a19086e0664e832842f2c24") user_name :{type: String}, password : {type: String} }); 和意见收集: const comments = mongoose.Schema({ user_id :{type: String}, //"5a19086e0664e832842f2c24" this is user's _id comment : {type: String} }); 现在我想知道如何用注释集合中stringtypes的用户_id来填充这2个集合。 先谢谢你

删除多个参考

我有一个关于删除多个引用的问题。 我有3个模式模型 – >事件,发布和评论。 事件存储对post(一对多)的引用以及对商店引用的注释(一对多)。 事件模式 const mongoose = require('mongoose'), Schema = mongoose.Schema, ObjectId = mongoose.Schema.Types.ObjectId; const EventSchema = new Schema({ organizer: { type: ObjectId, required: true, }, date: { start: { type: Date, required: true, }, end: { type: Date, required: true, }, }, name: { type: String, required: true, }, description: { type: […]

mongoose赛跑情况导致错误

我在我的客户端中实现了最喜欢/不喜欢的function,许多快速请求导致错误的结果,可能是由于竞争条件。 会发生什么事,那个用户发送一个请求到最喜欢的post,然后,非常不合适,但不正确的请求解决更快,并导致Unhandled promise rejection (rejection id: 1): VersionError: No matching document found 。 所以我的问题是如何避免这种情况? 是否有可能确保最喜欢的解决scheme? 谢谢! const UserSchema = new mongoose.Schema({ favorites: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }] }) UserSchema.methods.favorite = function(id) { if (this.favorites.indexOf(id) === -1) { this.favorites.push(id); } return this.save(); }; UserSchema.methods.unfavorite = function(id) { if (this.favorites.indexOf(id) > -1) { this.favorites.remove(id); } return […]

mongooseForegin键映射

我是MongoDB / Mongoose的新手,试图弄清楚如何映射Schema之间的关系。 我不认为问题是.populate()。 在创build新用户和客户时,我看不到收集中反映的关系 用户(通过本地/社交login)有许多客户端。 一组客户属于1个用户 这是正确的方式来声明外键? {type:Schema.Types.ObjectId,ref:'Client'} Schema是否应该有彼此的外键相互联系? 创build用户/客户端以使外键数据显示时是否需要额外的代码? 我读了一些关于populate() 用户 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = new Schema({ local: { id: String, email: String, password: String, name: String, mobile: String, clients: {type: Schema.Types.ObjectId, ref: 'Client'} }, google: { id: String, token: String, email: String, name: String, clients: […]