【问题标题】:How to insert json array to mongodb using node.js?如何使用 node.js 将 json 数组插入 mongodb?
【发布时间】:2018-03-07 18:19:39
【问题描述】:

当我尝试将我的 json 数组保存到 mongodb 时遇到问题,我没有显示任何想法, app.js

var express = require('express');
var path = require('path');
var mongoose = require('mongoose');

var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var NodeGeocoder = require('node-geocoder');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


var promise = mongoose.connect('mongodb://localhost/sirketler')

var Company = require('./app/models/company');

app.get('/', function (req, res) {
    var newCompany = Company({
      json:"sirketler" [
            {"Cityname":"Adana",
	     "OSBname":"4 K PLASTİK AMB.TURZ.TAŞ.PET.ÜRÜN.DAY.TÜK.MAL.TEKS.GIDA VE TAR.ÜRÜN.İNŞ.İTH.İHR.SAN.TİC.LTD.ŞTİ.", 
	     "Address":"A.H.S. ORGANİZE SANAYİ BÖLGESİ OSB LOKMAN HEKİM CADDESİ NO:2 ", 
	     "Phone":123123123,
	     "Fax":234234234,
	     "Sector":"KAUÇUK VE PLASTİK ÜRÜNLERİN İMALATI ", 		
	     "Email":"gokhan@4kplastik.com", "Website":"www.4kplastik.com"},
	    {"Cityname":"Ankara", "OSBname":"ABDİOĞULLARI PLASTİK VE AMB.SAN. A.Ş.",
	    "OSBname":"ABDİOĞULLARI PLASTİK VE AMB.SAN. A.Ş.",
	    "Address":"A.H.S. ORGANİZE SANAYİ BÖLGESİ OSB SABANCI CADDESİ NO: 8 ",
	    "Phone":432143123,
	    "Fax":243243243,
	    "Sector":"KAUÇUK VE PLASTİK ÜRÜNLERİN İMALATI ",
	    "Email":"info@abco.com.tr",
	    "Website":"www.abco.com.tr"}

]});


    // save the user
    newCompany.save(function(err) {
      if (err) throw err;

      console.log('User created!');
    });
})
app.listen (3000, function () {
  console.log('Example app listening on port 3000!')
})

company.js 来自 /home/furkan/companies/app/models/company.js

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

// create a schema
var companySchema = new Schema({

  Cityname: String,
  OSBname: { type: String},
  Address:{ type: String},
  Phone:{ type:Number},
  Fax:{ type:Number},
  Sector: { type: String},
  Email: {type: String},
  Website: { type: String},
  location: Number,
  meta: {
    age: Number,
    website: String
  },
  created_at: Date,
  updated_at: Date
});

// the schema is useless so far
// we need to create a model using it
var Company = mongoose.model('furkan', companySchema);

// make this available to our companys in our Node applications
module.exports = Company;

我看 对不起我的提问风格,我不知道如何问清楚,但我的问题是这样的,请帮助我解决这个问题。 我尝试在此处添加我的代码,但 cod 看起来不太好。

*如何更改我的架构?

【问题讨论】:

  • 在此处发布您的代码。还包括您的架构。有一天,有人会来问你的问题,想看看你用了什么代码。该链接可能不会永远存在。
  • 您需要创建一个与架构匹配的对象。请显示架构以便我们提供帮助。
  • 我编辑了我的帖子,你可以看看这个
  • 您没有遵循架构的结构,遵循您为公司制作的架构,它一定没问题。
  • 好的,谢谢,我现在正在查看我的架构,我正在尝试解决我的问题。

标签: javascript arrays node.js mongodb mongoose


【解决方案1】:

您的架构没有json 字段,也没有sirketler。

当您使用架构时,您必须遵循其结构。

你想要类似的东西

app.get('/', function (req, res) {
    var newCompany = Company({
        Cityname: "Adana", 
        OSBname: "4 K PLASTİK AMB.TURZ.TAŞ.PET.ÜRÜN.DAY.TÜK.MAL.TEKS.GIDA VE TAR.ÜRÜN.İNŞ.İTH.İHR.SAN.TİC.LTD.ŞTİ.", 
        Address: "A.H.S. ORGANİZE SANAYİ BÖLGESİ OSB LOKMAN HEKİM CADDESİ NO:2 ", 
        Phone: 123123123,
        Fax: 234234234,
        Sector: "KAUÇUK VE PLASTİK ÜRÜNLERİN İMALATI ", 
        Email: "gokhan@4kplastik.com", 
        Website: "www.4kplastik.com"
    });

    // save the user
    newCompany.save(function(err) {
        if (err) throw err;
        console.log('User created!');
    });
})

编辑

只需使用Model.create。但同样,每个公司都必须遵循架构中指定的结构。

Company.create([
    // company 1
    {
        Cityname: "Adana",
        OSBname: "4 K PLASTİK AMB.TURZ.TAŞ.PET.ÜRÜN.DAY.TÜK.MAL.TEKS.GIDA VE TAR.ÜRÜN.İNŞ.İTH.İHR.SAN.TİC.LTD.ŞTİ.", 
        Address: "A.H.S. ORGANİZE SANAYİ BÖLGESİ OSB LOKMAN HEKİM CADDESİ NO:2 ", 
        Phone: 123123123,
        Fax: 234234234,
        Sector: "KAUÇUK VE PLASTİK ÜRÜNLERİN İMALATI ",
        Email: "gokhan@4kplastik.com", 
        Website: "www.4kplastik.com"
    },
    // company 2
    {
        Cityname: "Ankara", 
        OSBname: "ABDİOĞULLARI PLASTİK VE AMB.SAN. A.Ş.",
        OSBname: "ABDİOĞULLARI PLASTİK VE AMB.SAN. A.Ş.",
        Address: "A.H.S. ORGANİZE SANAYİ BÖLGESİ OSB SABANCI CADDESİ NO: 8 ",
        Phone: 432143123,
        Fax: 243243243,
        Sector: "KAUÇUK VE PLASTİK ÜRÜNLERİN İMALATI ",
        Email: "info@abco.com.tr",
        Website: "www.abco.com.tr"
    }
], function (err, companies) {
    // ...
});

如果您有一个存储此数据的对象,您只需这样做

Company.create(obj.json.sirketler, function (err, companies) {
    // ...
})

如果要保存 json 或 sirketler 字段,则需要更改架构。您可能需要将strict 设置为false。

【讨论】:

  • 是的,你是对的,谢谢,但我会添加很多公司,一个就是这样,我会添加更多这样的公司信息。如何添加 json 架构,我该怎么做?
  • @FurkanKesgin 我不太明白你的问题。如果您尝试使用一个数组添加多个公司,您可以使用Model.create,但同样,您数组中的每个公司都必须遵循该结构(参见示例)。
  • 我编辑了我想做的帖子,如果我运行这个应用程序 mongodb 显示 2 值,因为需要 2 个信息。一个是阿达纳,一个是安卡拉,但在相同的代码中,我也会在安卡拉下添加伊斯坦布尔信息。我的问题是如何使用 json array mongodb 添加这些信息。
  • Mikey,你有 Skype 或其他网络吗?我会向你解释我想做什么。我的Skype是:furkan_bfk
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-14
  • 1970-01-01
  • 2016-05-02
  • 2015-09-20
  • 2019-01-11
  • 2020-03-15
  • 2020-01-02
相关资源
最近更新 更多