Я пытаюсь добавить продукт в базу данных, используя реакционную нативную систему и узел в серверной части. Запрос POST работает, когда я использую почтальон, но терпит неудачу с ошибкой ниже, когда я пытаюсь отправить данные из внешнего интерфейса:
Ошибка синтаксического анализа JSON: неожиданный идентификатор "Locals" node_modules \ обещать \ setimmediate \ core.js: 37: 14 в tryCallOne node_modules \ обещание \ setimmediate \ core.js: 123: 25 в ... еще 8 стековых фреймов из внутренних компонентов фреймворка
Я попытался записать req на консоль иЯ вижу, что тело {}
, пустой массив. Так что я думаю, что тело не прибывает на сервер. Как я могу решить эту проблему?
Контроллер:
import Locals from './model';
export const createLocals= async (req,res)=> {
const { imageUrl, title, category, description, address, area, price }= req.body;
const newLocals= new Locals({imageUrl, title, category, description, address, area, price });
console.log(req);
try {
res.status(201).json({locals: await newLocals.save()});
}catch(err){
return res.status(err.status >= 100 && err.status < 600 ? err.code : 500).send(err.message);
}
}
export const getAllLocals= async (req,res)=>{
try {
return res.status(200).json({locals: await Locals.find({})});
}catch(e){
return res.status(e.status).json({error: true, message: 'Error with Locals'});
}
}
Экран добавления продукта в Native:
const productSubmitHandler = () => {
dispatch(productsActions.createProduct(img,prodName,category,headline,address,area,+price));
}
return (
<View style={styles.container}>
<View style={styles.midCont}>
<View style={{alignItems: 'center', padding: 5}}>
{/* <Image source={this.state.avatarSource} style={styles.uploadAvatar} /> */}
<TextInput
style={{borderRadius: 10, borderWidth: 1, height: 100, width: 100, padding: 5}}
placeholder='Upload Image'
value={img} onChangeText={text=>setImg(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Product Name
</Text>
<TextInput
style={styles.input}
placeholder="Product Name"
value={prodName} onChangeText={text=>setProdName(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Category
</Text>
<TextInput
style={styles.input}
placeholder="Category"
value={category} onChangeText={text=>setCategory(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Headline
</Text>
<TextInput
style={styles.input}
placeholder="Headline"
value={headline} onChangeText={text=>setHeadline(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Address
</Text>
<TextInput
style={styles.input}
placeholder="Address"
value={address} onChangeText={text=>setAddress(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Area
</Text>
<TextInput
style={styles.input}
placeholder="Area"
value={area} onChangeText={text=>setArea(text)}
/>
</View>
<View style={styles.viewItem}>
<Text style={styles.textStyle}>
Price
</Text>
<TextInput
style={styles.input}
placeholder="Price"
value={price} onChangeText={text=>setPrice(text)}
/>
</View>
</View>
<View style={styles.viewButton}>
<Button
style={styles.button}
title='Add'
color={Colors.primary}
onPress={productSubmitHandler}
/>
</View>
</View>
);
}
Модель:
import mongoose, {Schema} from 'mongoose';
const LocalsSchema = new Schema ({
imageUrl: {
type: String,
required: true
},
title: {
type: String,
required: true
},
imageUrl: {
category: {
type: String,
required: true
},
description: {
type: String,
required: true
},
address: {
type: String,
required: true
},
area: {
type: String,
required: true
},
price: {
type: Number,
required: true
}
},
});