#node.js #reactjs #mongodb #express
#node.js #reactjs #mongodb #выразить
Вопрос:
У меня небольшая проблема, чтобы понять, как решить эту ошибку. я всего лишь новичок в nodejs и mongodb / mongoose.Я создаю компонент в reactjs для обновления каких-либо конкретных документов, используя его user_id, который я передаю параметрам в маршрутах. есть код:
const express = require('express');
const mongoose = require('mongoose');
const mongodb = require('mongodb')
const user = require('../schema');
const router = express.Router();
router.get('/:id', function (req, res) {
const userid = {
userid: (req.params.id || '')
}
console.log('getting to be updated data');
user.db1.findOne(userid, function (err, data) {
if (err) throw err
res.send(data)
console.log(data)
});
});
module.exports = router
//here is the user model:
const userSchema = new mongoose.Schema({
userid:{type:String},
fullname:{type:String},
phone:{type:Number},
email:{type:String},
})
const skillSchema = new mongoose.Schema({
userid:{type:Number},
skills:{type:String},
})
const users = mongoose.model('users',userSchema);
const skills = mongoose.model('skills',skillSchema);
module.exports ={
db1 : users,
db2 : skills
}
Комментарии:
1. Не могли бы вы опубликовать модель модели пользователя?
2. я добавил пользовательскую модель.
Ответ №1:
Я предполагаю, что вы не указали в функции find.one (), по какому параметру она будет искать. Попробуйте, введя свое собственное имя столбца вместо идентификатора.
user.db1.findOne({ id: userid } ,function(err, data){
if (err) throw err
res.send(data)
console.log(data)
});
Или вы можете изменить свою функцию и использовать findById().
user.db1.findById(userid, ,function(err, data){
if (err) throw err
res.send(data)
console.log(data)
});
Комментарии:
1. Метод findById() работает только тогда, когда вы хотите сопоставить со свойством _id, которое автоматически генерируется и создается mongodb