Articles of mongodb

与子文档项目的计算和相加

我有发票模型如下 { … "itemDetails": [ { "item": "593a1a01bbb00000043d9a4c", "purchasingPrice": 100, "sellingPrice": 150, "qty": 200, "_id": "59c39c2a5149560004173a05", "discount": 0 } ], "payments": [], … } 我需要计算项目总价或销售价格 – 折扣。 我看到了$sum操作符,但找不到与item._id

承诺呼叫和Express中间件中的Mongoose句柄validation错误

我正试图重构一个基于Express的简单的API代码来使用promise而不是callback。 我唯一的挑战是处理Mongoosevalidation错误(例如,如果用户存在的话就是testing),并把这个错误引入中间件。 我正在通过index.js上的中间件来处理错误: // Error handling middleware app.use(function(err, req, res, next){ res.status(422).send({error: err._message}) }); 这是成功处理除了现有用户部分以外的所有边缘情况的代码片段,其中错误被遗忘且在响应中不可见: router.post('/signup', function(req, res, next) { const email = req.body.email; const password = req.body.password; // Custom error if (!email || !password) { return res.status(422).send({ error: 'You must provide email and password'}); } User.findOne({ email: email }) .then(function(existingUser) { // If a […]

“mongoose”的说法在哪里来自mongoose?

不知道这是一个比Mongoose本身更普遍的JS问题,但在下面的代码中提供了“err”参数的函数是什么? //Save a new cat called "Thomas" to the "Cats" collection Thomas.save( function(err, cat) { if (err){ console.log("Cat not saved") } else { console.log("Saved") } })

Node.js mongodb和promise

我问我的问题,我得到了另一个答案,但我不能pipe理它(可有人请帮助我吗? 我的原始问题: 如何从函数(node.js)访问数据 我试图做的build议。 它的工作,直到在MongoDB中有一个集合。 如果没有收集会发生什么? 我得到一个错误 (node:18) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'userName' of undefined 有什么好的和简单的方法来确保我的function将工作,即使没有收集? 我的indeks.js var userID = this.event.session.user.userId; console.log(userID); var self = this; DbConn.dbFind("myUsers", userID).then(function(item) { self.emit(':ask', SpeechOutputUtils.pickRandom(self.t('WELCOME_OK', item.userName)) ); }, function(err) { self.emit(':ask', SpeechOutputUtils.pickRandom(self.t('WELCOME')) ); }); 我的db.utilis module.exports = { dbFind: function(collectionName, userID) { […]

debugging文档validation错误

从mongo shell: db.getCollectionInfos({ name : 'applications' })返回: [ { "name" : "applications", "type" : "collection", "options" : { "validator" : { "$and" : [ { "user_name" : { "$type" : "string" } }, { "password" : { "$type" : "string" } }, { "role" : { "$type" : "bool" } }, { "deposit_amount" : { […]

优化nodejs mysql插入

我一直在为mongodb到mysql转换工作的ETL工具,这是在github这里主持mongodb到mysql的转换 。 目前在mongodb文档转换之后,插入查询被发送执行,但是插入速度最大为每秒600次插入。 在nodejs的mysql中插入query / sec是否有限制? 如果是的话再怎么增加呢? 否则有没有这个限制的框架? 整个转换的代码是在主转换代码 。 创build用于插入查询的数组是有限制的,因为所有文档都可以包含不同的键,这将在查询列名中产生差异。

MongoDB不在date范围内

我想查询不在数据范围内的数据。 我正在阅读文档,发现$not和$nin ,但我不知道如何应用$not逻辑运算符和$nin运算符。 我试图包装$不,但它会抛出一个错误告诉 Unknown Top Level Operator: $nin or $not 我基本上想要查询获取date范围内的数据,我可以简单地使用$gt和$lt ,但我有一些复杂的数据。 我有两个字段startDate和endDate ,我应该使用这两个字段来根据用户select的数据范围来查询数据。 支持用户select2017-10-01 to 2017-10-10 , startDate会小于2017-10-01 , endDate在select用户的date范围之内(这个场景在查询时不应该被排除) ),同样我可能有一个相反的情况,如startDate在用户select的date范围内, endDate大于2017-10-10 。 我只是想排除在哪里 **`startDate`** and **`endDate`** < '2017-10-01' 和 **`startDate`** and **`endDate`** > '2017-10-10' 我试过的代码, $not: { $or: [{ $and: [ { "startDate" : { $lt: begin } }, { "endDate" : […]

mongoose不能将文档保存到一个特定集合的数据库中

我有一个function function generateInvoice(data) { const cdate = new moment.tz('GMT').toDate(); let invoiceData = { date: cdate, paidStatus: true, amount: data.amount, userId: data.userId } if (data.planName && data.planTypeName) { invoiceData.item = `${data.planName} – ${data.planTypeName}` invoiceData.quantity = data.seats || data.slots; } if (data.credits) { invoiceData.item = 'Credits'; invoiceData.quantity = data.credits; } return Invoice.create(invoiceData).then((data)=>{ data.invoiceId = data._id.toString().slice(-5); return data.save().then((data)=>{console.log(data); […]

查询抱怨缺less2dsphere-index,但它在那里

当我执行下面的代码(一个更大的例子,归结为要领) var mongoose = require("mongoose"); var LocationSchema = new mongoose.Schema({ userName: String, loc: { 'type': { type: String, enum: "Point", default: "Point" }, coordinates: { type: [Number] } } }) LocationSchema.index({ category: 1, loc: "2dsphere" }); var Location = mongoose.model("location", LocationSchema); var mongoDB = 'mongodb://user1:test@ds042417.mlab.com:42417/locationdemo'; mongoose.Promise = global.Promise; mongoose.connect(mongoDB, { useMongoClient: true }); var testUser […]

NodeJS服务器从MongoDB返回空数据

我正在制作一个应用程序,将应用程序发送POST请求数据到nodeJS服务器。 内容的JSON格式如下所示: {"encrypteddata": "someencryptedvalueofthetext"} 。 这些数据将被保存在MongoDB中。 我创build了两个文件,一个是app.js ,另一个是/models/encdata.js 。 这两个文件的内容如下。 app.js var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var mongoose = require('mongoose'); app.use(bodyParser.json()); ENCDATA = require('./models/encdata'); mongoose.connect('mongodb://localhost/encdata', { useMongoClient: true }); // the url access the database var db = mongoose.connection; app.get('/', function(req, res){ res.send('Visit /api/encdata'); app.get('/api/encdata', function(req, res){ ENCDATA.getENCDATA(function(err, […]