Модели FeathersJS Mongoose неправильно сохраняют данные в базу данных - PullRequest
0 голосов
/ 21 октября 2019

У меня есть эта проблема в моем приложении FeathersJS. У меня есть пользовательская модель Mongoose, как показано ниже.

// users-model.js - A mongoose model
//
// See http://mongoosejs.com/docs/models.html
// for more of what you can do here.
import { Application } from '../declarations';

export default function (app: Application) {
  const mongooseClient = app.get('mongooseClient');
  const users = new mongooseClient.Schema({

    first_name: { type: String, },
    last_name: { type: String, },
    email: {type: String, unique: true, lowercase: true},
    password: { type: String },
    dob: {type: Date, },


  }, {
    timestamps: true
  });

  return mongooseClient.model('users', users);
}

Однако, когда я вызываю мой API для создания пользователя, вот так.

POST /users?first_name=Patrick& last_name=Lumenus& email=abc@gmail.com& password=ABC123& dob=1991-10-10 HTTP/1.1
Host: localhost:3030
User-Agent: PostmanRuntime/7.18.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 2749d3e8-a7fc-45f8-96ae-0b04a4c51bc0,b1fb4da4-b9e1-4824-917a-5965250d6f9b
Host: localhost:3030
Accept-Encoding: gzip, deflate
Content-Length: 0
Connection: keep-alive
cache-control: no-cache

Кажется, что сохраняется только сгенерированный ObjectID и отметки времени. Это не сохраняет данные, которые я передал для нового пользователя. Вот данные в моей базе данных, которая была создана.

{"_id":{"$oid":"5dade949612103041bd7653c"},"createdAt":{"$date":{"$numberLong":"1571678537003"}},"updatedAt":{"$date":{"$numberLong":"1571678537003"}},"__v":{"$numberInt":"0"}}

Любой совет, что я делаю неправильно? Кстати, это совершенно новый проект Feathers. Я не добавил ни хуков, ни какого-либо другого дополнительного кода, кроме вышеперечисленного.

Что ж, я настроил файл mongoose.ts в соответствии с рекомендациями, чтобы использовать обновленный движок. Хотя я только добавил аргумент useUnifiedTopology: true, чтобы заглушить предупреждение, которое я получал при запуске приложения.

import mongoose from 'mongoose';
import { Application } from './declarations';
import logger from './logger';

export default function (app: Application) {
  mongoose.connect(
    app.get('mongodb'),
    { useCreateIndex: true, useNewUrlParser: true, useUnifiedTopology: true }
  ).catch(err => {
    logger.error(err);
    process.exit(1);
  });

  mongoose.Promise = global.Promise;

  app.set('mongooseClient', mongoose);
}

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

При использовании Почтальона вы используете x-www-form-urlencoded при отправке данных по запросу POST?

Вы также пытались отправить данные как application/json на вкладке raw в теле сообщения

0 голосов
/ 22 октября 2019

Согласно документам https://docs.feathersjs.com/api/client/rest.html#create вы должны передавать данные в теле, и это должен быть JSON (не забудьте установить тип содержимого)

...