javascript - 通过 Mongoose 将 JSON 数据发送到 MongoDB

标签 javascript mongodb mongoose

我目前有一个 JSON 对象,但无法通过 mongoose 将其持久保存到 mongoDB 数据库。我有两个主要问题。

  1. 我的模型设置对于下面的 JSON 对象是否正确?我以前从未使用过子文档,所以这是第一次。
  2. 当我尝试保留数据时,我不断收到错误(错误:“对象不是函数”)。我究竟做错了什么?

所有代码如下。

这是我设置 Mongoose 的方法。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/yjs');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'mongodb connection error:'));

var Schema = mongoose.Schema;

var resultsSchema = new Schema({
    jobtitle: String,
    company: String,
    city: String,
    state: String,
    country: String,
    formattedLocation: String,
    source: String,
    date: String,
    snippet: String,
    url: String,
    onmousedown: String,
    jobkey: String,
    sponsored: Boolean,
    expired: Boolean,
    indeedApply: Boolean,
    formattedLocationFull: String,
    formattedRelativeTime: String
});

var jobSchema = new Schema({
    version: Number,
    query: String,
    location: String,
    dupefilter: Boolean,
    highlight: Boolean,
    radius: Number,
    start: Number,
    end: Number,
    totalResults: Number,
    pageNumber: Number,
    results: [resultsSchema]

});


var Jobs = mongoose.model('Jobs', jobSchema);

module.exports = {
    Jobs: Jobs
}

这是我的 JSON 对象:

{
  version: 2,
  query: "javascript $19,900-$20,900",
  location: "New York, NY",
  dupefilter: true,
  highlight: true,
  radius: 25,
  start: 1,
  end: 3,
  totalResults: 3,
  pageNumber: 0,
  results: [
    {
      jobtitle: "Web Application Developer",
      company: "Sogeti",
      city: "New York",
      state: "NY",
      country: "US",
      formattedLocation: "New York, NY",
      source: "Sogeti",
      date: "Sat, 15 Nov 2014 08:50:24 GMT",
      snippet: "Roles/ Responsibility/ Qualifications: Position Location: Raritan, New Jersey Sogeti is a leading provider of technology and software testing, specializing...",
      url: "http://www.indeed.com/viewjob?jk=5c3af4fc30704f52&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "5c3af4fc30704f52",
      sponsored: false,
      expired: false,
      indeedApply: false,
      formattedLocationFull: "New York, NY",
      formattedRelativeTime: "30+ days ago"
    },
    {
      jobtitle: "Interactive Designer – New York",
      company: "Unruly Ltd",
      city: "New York",
      state: "NY",
      country: "US",
      formattedLocation: "New York, NY",
      source: "Unruly Ltd",
      date: "Fri, 28 Nov 2014 00:05:17 GMT",
      snippet: "WANTED: Positioned at the intersect of the three fastest-growing trends in digital advertising – programmatic, video and mobile – Unruly is a high-growth tech",
      url: "http://www.indeed.com/viewjob?jk=98f978c3e33061d1&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "98f978c3e33061d1",
      sponsored: false,
      expired: false,
      indeedApply: true,
      formattedLocationFull: "New York, NY",
      formattedRelativeTime: "30+ days ago"
    },
    {
      jobtitle: "Java Angular JS Developer",
      company: "UST Global",
      city: "Edison",
      state: "NJ",
      country: "US",
      formattedLocation: "Edison, NJ",
      source: "Dice",
      date: "Wed, 18 Feb 2015 14:06:16 GMT",
      snippet: "Rakesh.Sasidharanust-global.com <b>Javascript</b>, Angular JS, JQuery, Ext. Java Angular JS Developer 5 years experience in Java and web development Should have...",
      url: "http://www.indeed.com/viewjob?jk=f347ca5dc7439231&qd=PgQusJx_gGiiAmACeKxgepvuLa6C1I07uk43fDZ3DSq8GvDGPvLAOvUmXryxs9bezoA6A_gJOaAYR60u2fV5hFgosDLOUjUrxWWMfxXcFW0txtBb9O5egndMhGuvOU46RMGL25yEMtQuUuTH37UmVA&indpubnum=9222093808317380&atk=19g75527l0np13ao",
      onmousedown: "indeed_clk(this, '2276');",
      jobkey: "f347ca5dc7439231",
      sponsored: false,
      expired: false,
      indeedApply: false,
      formattedLocationFull: "Edison, NJ 08817",
      formattedRelativeTime: "22 days ago"
    }
  ]
}

我如何尝试保存数据:

var job = new Jobs(json_object);

Jobs.create(json_object, function (err, job) {
    if (err) return handleError(err);

    return job();
});

任何指导将不胜感激!对于 JSON 对象的格式感到抱歉,当我更改格式时,我无法让它保留为代码。它基本上是一个对象,其中一个键值是对象数组。

最佳答案

  models.Jobs.create(json_object, function (err) {
        if (err) {return handleError(err);

        } else {
            console.log('data collected')
        }

    })

上面的代码解决了这个问题。子文档似乎也正常工作。我彻底浏览了我需要的模块。

关于javascript - 通过 Mongoose 将 JSON 数据发送到 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014781/

相关文章:

javascript - 向我的谷歌地图提供纬度和经度列表,以使用标记将它们可视化

javascript - 获取滑动的速度值?

Javascript 从 0.0.0 以 00.00.00 格式返回时间

javascript - 为什么 Mongoose 会多次保存同一个文档?

MongoDB 4.2.5 接收来自客户端的请求时出错 : SSLHandshakeFailed: The server is configured to only allow SSL connections

javascript - 使用 Javascript 检测桌面浏览器(非移动设备)

mongodb - 开发:Express和Mongo Docker容器网络

node.js - 可以填充两个级别吗?

javascript - 如何修复 "trim"在 Mongoose 模式中不起作用

javascript - 按时钟范围查询 mongo 文档 - 正向和反向