Home php c# sql c c++ javascript python java go android git linux asp.net django .net node.js ios xcode cocoa iphone mysql tomcat mongodb bash objective-c scala visual-studio apache elasticsearch jar eclipse jquery ruby-on-rails ruby rubygems android-studio spring lua sqlite emacs ubuntu perl docker swift amazon-web-services svn html ajax xml java-ee maven intellij-idea rvm macos unix css ipad postgresql css3 json windows-server vue.js typescript oracle hibernate internet-explorer github tensorflow laravel symfony redis html5 google-app-engine nginx firefox sqlalchemy lucene erlang flask vim solr webview facebook zend-framework virtualenv nosql ide twitter safari flutter bundle phonegap centos Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 27

0
votes
answers
8 views
+10

MongoDB中

1

進口CSV創建模式,我有一個CSV,看起來像這樣:MongoDB中

Number,Date,ClientName,ClientSurname,ClientAge,Option1,Option2 
    1,01/01/2015,John,Foo,24,30, 

使用mongoimport我得到

{ 
    "_id":ObjectID(""), 
    "Number":1, 
    "date":"01/01/2015", 
    "ClientName":"John", 
    "ClientSurname":"Foo", 
    "ClientAge":24, 
    "Option1":30, 
    "Option2": "", 
    } 

我想是

{ 
    "_id":ObjectID(""), 
    "Number":1, 
    "date":"01/01/2015", 
    "Client":[{ 
     "ClientName":"John", 
     "ClientSurname":"Foo", 
     "ClientAge":24, 
    }] 
    "Options":["30"] 
    } 

我試着與導入之前的驗證,但沒有工作,是否有可能改變模式,因爲我想現在我有數據導入,或者我應該使用另一種方法?

沙发
0
0

如果您在CSV標頭中使用虛線字段名稱,mongoimport會自動爲您創建子文檔。但是,這不適用於數組。

例如:

$ cat test.csv 
Number,Date,Client.Name,Client.Surname,Client.Age,Option.0,Option.1 
1,01/01/2015,John,Foo,24,30, 

$ mongoimport -d test -c test --drop --headerline --type=csv test.csv 

> db.test.find() 
{ 
    "_id": ObjectId("5a4f0768c481930d7c589a41"), 
    "Number": 1, 
    "Date": "01/01/2015", 
    "Client": { 
    "Name": "John", 
    "Surname": "Foo", 
    "Age": 24 
    }, 
    "Option": { 
    "0": 30, 
    "1": "" 
    } 
} 

要獲得Option數組,你需要做一些後期處理。

或者,您可以使用單獨的腳本來獲取CSV文件,並使用驅動程序(例如Pymongo)將其插入到MongoDB中。這樣,您就可以完全控制生成的文檔的結構。

+0

謝謝,如果我想引用而不是嵌入客戶端?還需要使用Pymongo還是有其他方法? – doe

+0

@更復雜的導入需求將需要自定義導入代碼,因爲'mongoimport'假設您的數據是每行一個文檔。 –

0
votes
answers
7 views
+10

使用$ pull從嵌套數組中刪除項?

0

嘿我有一個問題,從我的數據庫中刪除嵌套數組,我想使用findOneAndUpdate$pull。我的意思是從reply陣列中刪除項目。我嘗試通過_id找到評論項目並刪除此回覆項目,但這不起作用。請看下面我的代碼。

我的架構

var productSchema = new Schema({ 

description: [{ 
    type: String, 
    require: true, 
}], 
comments: [{ 
    body: { 
     type: String, 
     trim: true, 
    }, 
    author: { 
     type: String, 
    }, 
    date: { 
     type: Date, 
    }, 
    reply: [{ 
     body: { 
      type: String, 
      trim: true, 
     }, 
     author: { 
      type: String, 
     }, date: { 
      type: Date, 
     } 
    }] 
    }] 
}); 

API

router.put('/dashboard/admin/komentarz/odpowiedz/usun/', function(req, res) { 
var currentCourse = req.body._id; // main item id 
var deleteReply = req.body.reply; // reply item id 
var commentId = req.body.commentId // comments item id 
Product.findOneAndUpdate({ _id: currentCourse }, { $pull: { reply: req.body.reply }}, function(err, product){ 
    //some code 
}) 
沙发
0
1

拿裁判從Mongoose, pull from subdocument

Product.findOneAndUpdate({ 
    _id: currentCourse, 
    // make sure sub document have a unique field let take _id 
    "comments._id" : 'commentId' 
}, 
{ 
    $pull: { 
     "comments.$.reply": { 
      _id:'replyId' 
     } 
    } 
}, 
{ 
    upsert:false, 
    new:true 
}, function(err, product){ 
    //some code 
}) 
0
votes
answers
7 views
+10

貓鼬保存回調不起作用

1

我正在爲使用MongoDB後端存儲數據的簡單Web應用程序構建服務器。我實例使用新的貓鼬連接:貓鼬保存回調不起作用

mongoose.connect('mongodb://localhost:27017/callback-newsfeed-db') 

我的MongoDB的輸出似乎罰款:

2017-12-02T21:00:53.277-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52027 #86 (1 connection now open) 
2017-12-02T21:00:53.291-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52028 #87 (2 connections now open) 
2017-12-02T21:00:53.291-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52029 #88 (3 connections now open) 
2017-12-02T21:00:53.292-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52030 #89 (4 connections now open) 
2017-12-02T21:00:53.292-0800 I NETWORK [thread1] connection accepted from 127.0.0.1:52031 #90 (5 connections now open) 

我還定義了一個型號如下:

const postSchema = mongoose.Schema({ 
    api: String, 
    source: String, 
    title: String, 
    upvotes: Number 
}) 

const Post = mongoose.model('Post', postSchema) 

在我的服務器端點之一,我有以下代碼:

server.post('/posts', (request, response) => { 
    console.log("INSIDE POSTS POST") 
    const newapi = request.body.api 
    const newsource = request.body.source 
    const newtitle = request.body.title 

    if(!newapi){ 
    response.send(422, "MUST PROVIDE API TYPE") 
    return 
    }else if(!newsource){ 
    response.send(422, "MUST PROVIDE RESOURCE SOURCE") 
    return 
    }else if(!newtitle){ 
    response.send(422, "MUST PROVIDE RESOURCE TITLE") 
    return 
} 

// Add a new post 
    const newPost = new post.Post({ 
     api: newapi, 
     source: newsource, 
     title: newtitle, 
     upvotes: UPVOTE_DEFAULT 
    }) 
    console.log("ABOUT TO SAVE") 

    // Save to DB and send to client 
    newPost.save(error => { 
     console.log("SAVE ERROR ") 
     console.log(error) 
     if(error){ 
      console.log("ERROR IN NEWPOST") 
      throw error 
     }else{ 
      console.log("STATUS OK") 
      response.status(STATUS_OK) 
      response.set({'Content-type': 'application/json'}) 
      response.send(JSON.stringify(newPost)) 
     } 
     console.log("SAVE HAS COMPLETED") 
    }) 
    console.log("AFTER NEW POST") 
    }) 

現在,當我跑我的應用程序,我在控制檯看到以下的輸出:

INSIDE POSTS POST 
ABOUT TO SAVE 
AFTER NEW POST 

然而,出於某種原因(不論我等待多久)沒有newPost.save()回調以往似乎的一部分打電話。 MongoDB輸出並不表示明顯的錯誤,所以我有點失落。爲什麼會發生這種情況?

我對節點非常陌生,所以關於如何甚至去調試這個問題或思考可能的錯誤元兇的任何想法將不勝感激!

沙发
0
0
const newPost = new post.Post({ 

應該

const newPost = new Post({ 
+0

這不能提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/18136963) – Nisarg

+0

我已經在回調的每個分支中都有console.log語句,就像你上面看到的那樣,並且沒有任何一個被打印出來。 – MEric

+0

看到我的編輯,我想我找到了你的問題。 – Alan

板凳
0
0

您可以設置貓鼬使用ES6承諾。

mongoose.Promise = global.Promise; 
    mongoose.connect(process.env.MONGODB_URI); 

然後你可以使用

newPost.save().then(() => { 
    console.log('Everything went well'); 
    }).catch((e) => { 
    console.log('There was an error', e.message); 
    }); 
地板
0
0

原來,這個問題似乎一直的MongoDB和版本我是用貓鼬之間的不兼容。一旦我通過調用npm升級mongodb來升級我的mongodb版本,保存操作似乎已開始工作

0
votes
answers
7 views
+10

Pymongo如何將json文件導入到mongodb中

0

我有一個本地json文件,我需要使用Pymongo將json文件導入到mongodb中。任何人都知道如何做到這一點?Pymongo如何將json文件導入到mongodb中

沙发
0
0

您已經有了答案,有關更多詳細信息,請閱讀有關pymongo的文檔。

importing JSON to mongoDB using pymongo Here stackoverflow answer

from bson import json_util 
data = json_util.loads(response.read()) 
+0

我讀過這篇文章,所以我應該在哪裏把本地文件的目錄?這不是一個網址 – leo2510

0
votes
answers
7 views
+10

在貓鼬比較對象以日期時間

0

這是我的MongoDB架構:在貓鼬比較對象以日期時間

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var DogSchema = new Schema({ 
    id_user: { 
     type: String, 
     required:true 
    }, 
    name: { 
     type: String, 
     required:true 
    }, 
    imei: { 
     type: String, 
     required:true, 
     unique:true 
    }, 
    position: [{ 
     lat: {type: Number, required:true}, 
     lng: {type: Number, required:true}, 
     date: {type: Date, required:true} 
    }], 
    teams: [{ 
     code: {type:String,required:true} 
    }] 
}); 

module.exports = mongoose.model('Dog', DogSchema); 

我想找到一個特定的日期範圍內只有位置。 我試圖使用查詢:

db.dogs.find({"position.date" : { $gte : new Date("2017-11-25T00:00:00.000Z") , $lt : new Date("2017-11-26T00:00:00.000Z")}}) 

但是,如果我找到匹配查詢的位置,數據庫返回的所有文件。我怎樣才能得到那個日期範圍的職位?

沙发
0
0

要爲子文檔中查詢中指定的條件,你必須使用.populate()match

db.dogs.find({}). 
    populate({ 
    path: "position", 
    match: { date: { $gte : new Date("2017-11-25T00:00:00.000Z") , $lt : new Date("2017-11-26T00:00:00.000Z") }}, 
    // Explicitly exclude `_id` if needed 
    select: '-_id date', 
    }). 
    exec() 

看到Mongoose Query Population

0
votes
answers
7 views
+10

解析服務器在mongodb中創建相同的對象

1

例如,在我的本地解析服務器中,每次保存對象時,都會爲該特定對象創建新的唯一對象ID。但是當我將它部署到實時服務器(ec2或其他站點)時,它會更新同一對象ID中的數據。 (如果我第一次保存一個對象,它會向我展示像67XBVFA這樣的objectid,但是當我創建另一個對象時,它將更新同一對象ID 67XBVFA中的值)。順便說一句,我正在使用MongoDB作爲數據庫。儘管我更改了字段的值,但仍然保留了相同的對象ID。解析服務器在mongodb中創建相同的對象

sampleobject.set("name", "xxxx"); 
sampleobject.set("email", "[email protected]"); 
sampleobject.save(null).then(objectstatus => { 
    res.success(200, objectstatus 
)} 

爲什麼它在我的本地主機中正確生成一個唯一的對象ID。但在活動實例中更新相同的對象ID?

沙发
0
0
const sampleobjects = Parse.Object.extend("sampleClass"); 
const sampleobject = new sampleobjects(); 

問題是我在雲端函數之外聲明瞭這個。喜歡這個。

const sampleobjects = Parse.Object.extend("sampleClass"); 
const sampleobject = new sampleobjects(); 

Parse.Cloud.define('sampleFunction', (res) => { 
    sampleobject.set("name", "xxxx"); 
    sampleobject.set("email", "[email protected]"); 
    sampleobject.save(null).then(objectstatus => { 
     res.success(200, objectstatus 
    )} 
}); 

因此,每次檢查它時,都會啓動相同的對象ID。

因此,當我這樣宣佈它內部。

Parse.Cloud.define('sampleFunction', (res) => { 
    const sampleobjects = Parse.Object.extend("sampleClass"); 
    const sampleobject = new sampleobjects(); 
    sampleobject.set("name", "xxxx"); 
    sampleobject.set("email", "[email protected]"); 
    sampleobject.save(null).then(objectstatus => { 
     res.success(200, objectstatus 
    )}; 
}); 
0
votes
answers
6 views
+10

MongoDB C#驅動程序 - >檢查一個字符串是否包含一個列表中的元素(字符串)

0

我試圖實現相當簡單的算法。假設我們有一些簡單的層次結構: (root)A => B => C 每個nove代表一些ID,每個ID包含許多記錄。MongoDB C#驅動程序 - >檢查一個字符串是否包含一個列表中的元素(字符串)

記錄有: (串)Id和(名單)ExcludedId

所以我們可以有:

REC 1:{ID:A; ExcludedId = [B]}

rec2:{Id:A; ExcludedId = [D]}

rec3:{Id:A; ExcludedId = [B]}

rec1':{Id:A; ExcludedId = []}

REC1" :{ID:C; ExcludedId = []}

REC2' :{ID:d; ExcludedId = []}

現在算法看起來像:

如果我想借此記錄從CI需要考慮: C,B,A ID和 C,B存在,不存在ExcludedId

所以我寫了:

public List<Record> GetRecords(string id, List<string> parentId) 
{ 
    if (parentsIds == null) 
      parentsIds = new List<string>(); 

    var collection = _mongoDbConnection.GetCollection<Records>(); 

    var allScenarios = parentsIds.ToList(); 
    allScenarios.Add(Id); 

    var myfilter = Builders<Record>.Filter.And(
      Builders<Record>.Filter.Where(record => allScenarios.Any(s => record.Id.Contains(s))), 
      Builders<Record>.Filter.Not(Builders<Record>.Filter.Where(record => allScenarios.Any(s => record.ExcludedIds.Contains(s)))) 
     ); 

return collection.Find(myfilter).ToList(); 
} 

但是我收到一個異常,說:

Unsupported filter: Any(value(System.Collections.Generic.List`1[System.String]).Where({document}{Id}.Contains({document}))).' 

你能幫助我嗎?謝謝你在前進

編輯:

更改:

Builders<Record>.Filter.Where(record => allScenarios.Any(s => record.Id.Contains(s)) 

Builders<Record>.Filter.In(ts => ts.ScenarioGuid, parentScenarioGuids), 

這作品!但我有問題

Builders<Record>.Filter.Not(Builders<Record>.Filter.Where(record => allScenarios.Any(s => record.ExcludedIds.Contains(s)))) 
     ); 

因爲ExcludedIds是列表。其結果是:

Builders<Record>.Filter.Nin(ts => ts.ExcludedScenarioGuids, allScenarios) 

Cannot convert lambda expression to type FieldDefinition<Records, string> because it not a delegate type. 

異常指向TS => ts.ExcludedScenarioGuids

EDIT2:

如@cloudikka寫道,溶液是AnyNin和在。謝謝

沙发
0
2

您可能需要使用In方法而不是Where方法。或者,Nin方法。兩者都可以用於單個值字段。對於數組字段,還有AnyInAnyNin

相關來源:

In method

Nin method

AnyIn method

AnyNin method

+0

謝謝!部分解決了我的問題。但我仍然有問題,我寫在我的問題(我編輯後)。你能再幫忙嗎? –

+0

我敢打賭,它是數組字段,在這種情況下,您必須使用[AnyNin方法](http://mongodb.github.io/mongo-csharp-driver/2.5/apidocs/html/M_MongoDB_Driver_FilterDefinitionBuilder_1_AnyNin__1.htm) – cloudikka

+0

謝謝!幾分鐘前我發現了任何一個。但基本上 - 你的答案幫助了我。 –

0
votes
answers
6 views
+10

用嵌套對象編寫測試時Mogoose驗證錯誤

0

我正在編寫一個使用javascript,node,mongoDB和mongoose的小應用程序。我有兩個集合;用戶和組,其中每個組包含用戶用嵌套對象編寫測試時Mogoose驗證錯誤

用戶的數組:{_ ID:{類型:字符串,必需:真}姓:{類型:字符串,必需:真},..}

組{ _id:{type:String,required:true},users:[{user:userSchema}]}

我正在使用Mocha和Superagent編寫api單元測試。當我爲包含用戶的嵌套對象的組插入示例文檔時,出現驗證錯誤?

您能否讓我知道這個例子出了什麼問題?

var userSchema = 
{ 
    _id: { 
     type: String, 
     required: true, 
    }, 
    profile: { 
     firstName: { 
      type: String, 
      required: true 
     }, 
     lastName: { 
      type: String, 
      required: true 
     } 
}; 

var GroupSchema = 
{ 
    _id: { 
     type: String, 
     required: true 
    }, 
    users:[{ 
     user: User.userSchema 
    }] 
}; 
it('can query group by id', function(done) { 
    var users = [ 
    { _id: 'az', profile: {firstName: 'a', lastName: 'z'}}, 
    { _id: 'bz', profile: {firstName: 'b', lastName: 'z'}}, 
    ]; 

    User.create(users, function(error, users) { 
    assert.ifError(error); 
    Group.create({ _id: 'ab', users: [{ _id: 'az', profile: {firstName: 'a', lastName: 'z'}}, { _id: 'bz', profile: {firstName: 'b', lastName: 'z'}}] }, function(error, doc) { 
    assert.ifError(error); 
    var url = URL_ROOT + '/api/groups/id/ab'; 

    superagent.get(url, function(error, res) { 
     assert.ifError(error); 
     var result; 
     assert.doesNotThrow(function() { 
     result = JSON.parse(res.text); 
     }); 
     assert.ok(result.group); 
     assert.equal(result.group._id, 'ab'); 
     done(); 
    }); 
    }); 
    }); 
}); 

錯誤消息:

Uncaught ValidationError: ChatGroup validation failed: users.1._id: Cast to ObjectID failed for value "bz" at path "_id", users.0._id: Cast to ObjectID failed for value "az" at path "_id", users.0.user.profile.lastName: Path `user.profile.lastName` is required., users.0.user.profile.firstName: Path `user.profile.firstName` is required., users.0.user._id: Path `user._id` is required., users.1.user.profile.lastName: Path `user.profile.lastName` is required., users.1.user.profile.firstName: Path `user.profile.firstName` is 
0
votes
answers
6 views
+10

我的JavaScript變量沒有在Mongoose的.findOne()函數中設置

0

好的,所以我使用Node.js,ExpressJS和MongoDB來製作網站。我正在嘗試通過AJAX調用來檢查表單的有效性(因爲我想顯示輸入值是否在用戶輸入時隨時可用)。我已將所有這些達到了90%。唯一不起作用的是檢查用戶名和電子郵件是否已經存在或不在數據庫中。我的查詢是完美的,但是當我試圖存儲查詢給出的結果(無論是否在數據庫中)時,它不會發生。 這裏是我的代碼: -我的JavaScript變量沒有在Mongoose的.findOne()函數中設置

router.post('/signup',function(req, res){ 
    const username = req.body.username; 
    const email = req.body.email; 

    var response = []; 
    var usernameTaken, emailTaken; 

    User.findOne({username:username}, function(err, user){ 
    if (err) throw err; 
    if (Boolean(user)) { 
     console.log(user); // This works perfectly 
     usernameTaken = true; // This does not works at all! 
     console.log(usernameTaken); // Nor does this one. :/ 
    } else { 
     usernameTaken = false; 
    } 
    }); 

    console.log(usernameTaken); // No output 

    // Else part gets executed because usernameTaken does not sets to true. 
    if (usernameTaken) { 
    response.push({field: "username", type: "danger", message: "Sorry! This username is already taken :("}); 
    } else { 
    response.push({field: "username", type: "success", message: "This username is now yours ;)"}); 
    } 

    if (!isValid(email)) { 
    response.push({field: "email", type: "danger", message: "Please enter a valid E-mail Address."}); 
    } else { 
    response.push({field: "email", type: "success", message: "E-mail is valid."}); 
    } 

    User.findOne({email:email}, function(err, user){ 
    if (err) throw err; 
    if (Boolean(user)) { 
     console.log(user); // Again this works. 
     emailTaken = true; // But this does not works :(
    } else { 
     emailTaken = false; 
    } 
    }); 

    // Else part gets executed because emailTaken does not sets to true. 
    if (emailTaken) { 
    response.push({field: "email-avail", type: "danger", message: "This E-mail address is already registered!"}); 
    } else { 
    response.push({field: "email-avail", type: "success", message: "E-mail is valid."}); 
    } 

    res.send(response); 
}); 
+0

你需要在這裏使用的承諾,因爲你是用asynchrnous呼叫 – Sajeetharan

+0

你面對的將獲得異步執行的承諾處理。 –

+0

'.findOne'異步執行,所以'console.log(usernameTaken); //在調用回調之前,將不會執行輸出。 – hsfzxjy

沙发
0
0

記住,像findOne或任何功能都異步地執行這意味着你把回調裏面不斷的執行步驟,他們將隨時得到執行。這就是爲什麼你的布爾值不在回調之外按預期打印的原因。

現在,您可以使用的一種方法是使用async/await,這將基本上確保您的代碼在承諾解決之前停止執行。所以,以一種使整個過程同步的方式。

ASYNC

AWAIT

試試這個。我使用async/await使過程同步。

router.post('/signup',async function(req, res){ 
    const username = req.body.username; 
    const email = req.body.email; 

    var response = []; 
    var usernameTaken, emailTaken; 

    const userNamePromise = new Promise((resolve, reject) => { 
    User.findOne({username:username}, function(err, user){ 
     if (err) reject(err); 
     if (Boolean(user)) { 
     resolve(true) 
     } else { 
     resolve(false); 
     } 
    }); 
    }) 

    usernameTaken = await userNamePromise; 

    console.log(usernameTaken); 

    if (usernameTaken) { 
    response.push({field: "username", type: "danger", message: "Sorry! This username is already taken :("}); 
    } else { 
    response.push({field: "username", type: "success", message: "This username is now yours ;)"}); 
    } 

    if (!isValid(email)) { 
    response.push({field: "email", type: "danger", message: "Please enter a valid E-mail Address."}); 
    } else { 
    response.push({field: "email", type: "success", message: "E-mail is valid."}); 
    } 

    const emailPromise = new Promise((resolve, reject) => { 
    User.findOne({email:email}, function(err, user){ 
     if (err) reject(err); 
     if (Boolean(user)) { 
     console.log(user); 
     resolve(true); 
     } else { 
     resolve(false); 
     } 
    }); 
    }) 
    emailTaken = await emailPromise; 

    if (emailTaken) { 
    response.push({field: "email-avail", type: "danger", message: "This E-mail address is already registered!"}); 
    } else { 
    response.push({field: "email-avail", type: "success", message: "E-mail is valid."}); 
    } 

    res.send(response); 
}); 
+0

我在'usernameTaken = await userNamePromise;'行收到一個錯誤。我搜索了這個錯誤,它顯示我們只能在異步函數內使用await。所以,我在承諾之後使用了'.then()'。現在,我得到了結果(真/假),但我不知道爲什麼'response.push()'不起作用。 –

+0

檢查我的代碼的第一行,並嘗試一次。 –

+0

@HemakshiSachdev添加異步後工作嗎? –

0
votes
answers
6 views
+10

將值添加到變量不工作只是追加

2

我想採取quantity然後將order號碼添加到它然後重新保存值quantity將值添加到變量不工作只是追加

// update expendable quantity POST 
    app.post('/dashboard/it/expendable/:id', 
    setRedirect({auth: '/login', success: '/dashboard/it/expendable', failure: '/dashboard/it/expendable'}), 
    isAuthenticated, 
    (req, res, next) => { 
     Expendable.findById(req.parms.id, function(err, expendable) { 
     if (err) return (err); 
     expendable.quantity = expendable.quantity + req.body.order; 
     expendable.save(function(err) { 
      if (err) return (err); 
      req.flash('success', { msg: 'Expendable checked out.' }); 
      res.redirect(req.redirect.success); 
     }); 
     }); 
     next(); 
    }); 

目前,它只是增加了req.body.orderexpendable.quantity結束而不是將其數字加給它的。

我不明白爲什麼它不工作,我有類似的代碼使用-和它的作品,但但+不。我確實看過谷歌,看到我發現的一切只顯示var1 + var2

我沒有檢查數據類型,它是數字,輸入也是數字類型。

+1

我會分析它們爲數字,它是最有可能其中之一是一個字符串,在這種情況下,它附加:「5」+ 5 =「55」 –

+0

@StephenMiller有沒有一種方法可以使用mongo查看用戶帳戶每個部分的數據類型。 – joshk132

+0

我沒有使用過mongo,但通常它應該是您在數據庫中標記的類型,您可以自己檢查類型。如果你還沒有使用lodash,那麼這是一個非常棒的工具庫,專爲這類任務設計。 '_.isString(num)== boolean' –

沙发
0
3

我會分析它們爲數字,它最有可能是其中之一是一個字符串,在這種情況下,追加:"5" + 5 = "55""5" - 5 = 0

example of adding and minus with a string

+0

我嘗試了你的建議,但我使用了原生JS,並用'var foo = Number(bar);' – joshk132

+0

做得很棒!如果它解決了您的問題,請將其標記爲答案,謝謝! –